C++ 模板化 class "no appropriate default constructor available"
C++ templated class "no appropriate default constructor available"
我为 C++ 中的链表创建了一个节点 class:
template <class T> class Node {
public:
T val;
Node* next;
Node(T val) {
this->val = val;
this->next = nullptr;
}
~Node() {
Node<T>* temp = this->next;
if (temp != nullptr && temp->next != nullptr)
delete(temp->next);
}
};
并且在尝试 tp 初始化它时:
definition:
Node<Device>* devices;
code (in function):
this->devices = new Node<Device>({ this->serial_counter, name });
我收到这个错误:
Error C2512 'Device': no appropriate default constructor
available Gym c:\users\amitm\onedrive\מסמכים\visual studio
2015\projects\gym\gym\node.h 7
第 7 行:
Node(T val) {
此外,如果需要,这是 "Device" 构造函数:
Device::Device(int id, char* name) {
this->id = id;
strcpy(this->name, name);
}
我该如何解决这个错误?我在网上看了一个多小时,找不到适合我的解决方案。
问题是您的 T
类型的值是在您的构造函数中初始化的,然后您尝试分配一个新值。如果你想去除错误信息,你需要自己初始化你的值:
Node(T v)
: val(v)
, next(nullptr)
{}
您可以获得更多信息here。
我为 C++ 中的链表创建了一个节点 class:
template <class T> class Node {
public:
T val;
Node* next;
Node(T val) {
this->val = val;
this->next = nullptr;
}
~Node() {
Node<T>* temp = this->next;
if (temp != nullptr && temp->next != nullptr)
delete(temp->next);
}
};
并且在尝试 tp 初始化它时:
definition:
Node<Device>* devices;
code (in function):
this->devices = new Node<Device>({ this->serial_counter, name });
我收到这个错误:
Error C2512 'Device': no appropriate default constructor available Gym c:\users\amitm\onedrive\מסמכים\visual studio 2015\projects\gym\gym\node.h 7
第 7 行:
Node(T val) {
此外,如果需要,这是 "Device" 构造函数:
Device::Device(int id, char* name) {
this->id = id;
strcpy(this->name, name);
}
我该如何解决这个错误?我在网上看了一个多小时,找不到适合我的解决方案。
问题是您的 T
类型的值是在您的构造函数中初始化的,然后您尝试分配一个新值。如果你想去除错误信息,你需要自己初始化你的值:
Node(T v)
: val(v)
, next(nullptr)
{}
您可以获得更多信息here。