Ami*_*mit -1 c++ visual-c++ template-classes
我在C++中为链表创建了一个Node类:
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);
}
};
Run Code Online (Sandbox Code Playgroud)
在尝试tp初始化时:
definition:
Node<Device>* devices;
code (in function):
this->devices = new Node<Device>({ this->serial_counter, name });
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
错误C2512'设备':没有合适的默认构造函数健身房c:\ users\amitm\onedrive \מסמכים\ visual studio 2015\projects\gym\gym \node.h 7
第7行:
Node(T val) {
Run Code Online (Sandbox Code Playgroud)
此外,如果需要,这是"设备"构造函数:
Device::Device(int id, char* name) {
this->id = id;
strcpy(this->name, name);
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?我在网上看了一个多小时,找不到适合我的解决方案.
问题是您的类型值T在构造函数中初始化,然后您尝试分配新值.如果要删除错误消息,则需要自己初始化值:
Node(T v)
: val(v)
, next(nullptr)
{}
Run Code Online (Sandbox Code Playgroud)
您可以在此处获得更多信息.
| 归档时间: |
|
| 查看次数: |
840 次 |
| 最近记录: |