C++ “如何修复错误”;无法转换<;括号括起初始化器列表>;“到节点”;
我正在尝试创建structC++ “如何修复错误”;无法转换<;括号括起初始化器列表>;“到节点”;,c++,C++,我正在尝试创建struct节点的数组。有人知道如何在类散列中声明构造函数来创建节点的数组吗。在我的代码中有一个错误,表示无法将转换为节点: template <typename E, size_t N=7> class Hashing : public Container<E> { struct Node { E value; Node *next; Node (E value) : value (value), n
节点的数组
。有人知道如何在类散列中声明构造函数来创建节点的数组吗。在我的代码中有一个错误,表示无法将
转换为节点
:
template <typename E, size_t N=7>
class Hashing : public Container<E> {
struct Node {
E value;
Node *next;
Node (E value) : value (value), next(nullptr) {}
E getValue() { return value; }
void putValue(E value) { this->value = value; }
Node *getNext() { return next; }
};
size_t nmax;
size_t n;
Node * values;
Node field[N] = {};
public:
Hashing(): n(N) {};
模板
类哈希:公共容器{
结构节点{
E值;
节点*下一步;
节点(E值):值(value),下一个(nullptr){
E getValue(){return value;}
无效putValue(E值){this->value=value;}
Node*getNext(){return next;}
};
最大尺寸;
尺寸;
节点*值;
节点字段[N]={};
公众:
散列():n(n){};
问题是您的节点
类不是默认可构造的
Node field[N] = { };
它尝试默认构造数组中的每个元素。由于您有一个用户定义的构造函数,编译器提供的默认构造函数将被抑制。如果您添加一个类似的构造函数
Node(): value(0), next(nullptr) {}
代码将被编译。无法看到实例化类。应该在哪里发生错误?