【发布时间】:2015-11-14 13:14:59
【问题描述】:
我在 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);
}
};
当尝试 tp 初始化它时:
definition:
Node<Device>* devices;
code (in function):
this->devices = new Node<Device>({ this->serial_counter, name });
我收到此错误:
错误 C2512“设备”:没有合适的默认构造函数 可用健身房 c:\users\amitm\onedrive\מסמכים\visual studio 2015\projects\gym\gym\node.h 7
第 7 行:
Node(T val) {
此外,如果需要,这是“设备”构造函数:
Device::Device(int id, char* name) {
this->id = id;
strcpy(this->name, name);
}
如何解决此错误?我在网上查了一个多小时,找不到适合我的解决方案。
【问题讨论】:
-
您是否尝试过在默认构造函数中进行编码?可能会变魔术。
-
我现在做了,它工作了,但我确实想用数据构建它。一个空的构造函数将不是我所需要的。
-
您不需要在 C++ 中编写链表类。使用
std::list。 -
我知道我有 std::list,但这是 Uni 的一个练习,这是要求。 (如果我去看看 std::list 是如何实现的,我几乎会复制它)
标签: c++ visual-c++ template-classes