假设我有一个类,它将用于创建树或列表结构。我们称之为
template <typename K, typename V>
class Node{
// some data
Node<K,V>* next;
Node() {
next = static_cast<Node<K,V>*>( malloc( sizeof(Node<K,V>) ));
}
};
通过这样做,我得到以下编译器错误:
没有依赖于模板的"malloc"参数 参数,因此必须提供"malloc"的声明(如果使用 "-fallowive",G++ 将接受您的代码,但允许使用 未声明的名称已弃用)
有没有办法以这种方式使用 malloc 而不必使用已弃用的代码?我想使用 malloc 而不是 new,因为我想在那里做一些更高级的内存管理。
看起来你缺少#include <cstdlib>
或#include <stdlib.h>
.编译器抱怨缺少声明。这些包含文件提供了一个。
编译器错误告诉您它没有声明malloc
是什么。您缺少声明该函数的包含。
除此之外,这种方法被打破了。您正在编写一个通用树,但由于使用了malloc
您将使用限制为 POD 类型(我假设K
和V
存储在Node
中)。您应该改用new
来调用类型的构造函数,而不仅仅是分配内存。