没有用于初始化“listNode 结构”的匹配构造函数
no matching constructor for initialization of 'listNode struct
下面的插入方法使用了 struct listNode 的构造函数。
void list::insert(size_t i){
if (head == nullptr){
head = new listNode(nullptr,i);
tail = head;
++len;
}
listNode* new_node = new listNode(nullptr,i);
tail->next = new_node;
tail = new_node;
}
listNode的定义
struct listNode{
////@: index into the input buffer
listNode* next;
size_t index;
};
除了这个post的标题给出的错误,我还得到了注释
note: candidate constructor (the implicit copy constructor) not
viable: requires 1 argument, but 2 were provided
struct listNode{
这对我来说没有意义。很明显,我在初始化中提供了两个参数,它应该使用参数到实际参数的词典编排绑定。
head = new listNode(nullptr,i);
是错误的,因为 listNode
没有任何用户定义的构造函数。因此,您不能使用语法 listNode(nullptr, i)
来构造一个。
使用
head = new listNode{nullptr, i}; // This is member-member wise initialization
同样,而不是
listNode* new_node = new listNode(nullptr, i);
使用
listNode* new_node = new listNode{nullptr, i};
下面的插入方法使用了 struct listNode 的构造函数。
void list::insert(size_t i){
if (head == nullptr){
head = new listNode(nullptr,i);
tail = head;
++len;
}
listNode* new_node = new listNode(nullptr,i);
tail->next = new_node;
tail = new_node;
}
listNode的定义
struct listNode{
////@: index into the input buffer
listNode* next;
size_t index;
};
除了这个post的标题给出的错误,我还得到了注释
note: candidate constructor (the implicit copy constructor) not
viable: requires 1 argument, but 2 were provided
struct listNode{
这对我来说没有意义。很明显,我在初始化中提供了两个参数,它应该使用参数到实际参数的词典编排绑定。
head = new listNode(nullptr,i);
是错误的,因为 listNode
没有任何用户定义的构造函数。因此,您不能使用语法 listNode(nullptr, i)
来构造一个。
使用
head = new listNode{nullptr, i}; // This is member-member wise initialization
同样,而不是
listNode* new_node = new listNode(nullptr, i);
使用
listNode* new_node = new listNode{nullptr, i};