在模板化类的构造函数中使用 malloc
Using malloc in a constructor of a templated class
假设我有一个类,它将用于创建树或列表结构。我们称之为
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
来调用类型的构造函数,而不仅仅是分配内存。
相关文章:
- "error: no matching function for call to"构造函数错误
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 选择要调用的构造函数
- 如何委托派生类使用其父构造函数?
- 构造函数正在调用一个使用当前类类型的函数
- 没有用于初始化C++中的变量模板的匹配构造函数
- 如果普通默认构造函数不执行任何操作,为什么我们不能使用 malloc 创建平凡可构造的对象?
- 在使用新操作员和C 中的结构的调用构造函数时,获得内存损坏(Malloc)
- 是否有理由使用 malloc 初始化构造函数中的指针
- 构造函数中的 Malloc 在通过 New 调用时返回 NULL
- 为什么在malloc中没有调用构造函数
- C++ 中的 malloc 和构造函数
- 在模板化类的构造函数中使用 malloc
- malloc.c:3097: sYSMALLOc:断言在动态创建的对象的构造函数中失败
- 显示 new() 在 malloc 返回的地址调用对象的构造函数的源代码
- 在使用C malloc的c++构造函数中使用new
- 被释放的指针没有在构造函数中分配 realloc 和 malloc