【问题标题】:no matching constructor for initialization of 'listNode struct'listNode 结构的初始化没有匹配的构造函数
【发布时间】:2018-11-14 10:19:12
【问题描述】:

下面的方法 insert 使用了 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;
};

除了这个帖子标题给出的错误,我也得到了注释

 note: candidate constructor (the implicit copy constructor) not
      viable: requires 1 argument, but 2 were provided
struct listNode{

这对我来说没有意义。很明显,我在初始化中提供了两个参数,它应该使用参数到实际参数的字典绑定。

【问题讨论】:

    标签: c++ struct initialization initializer-list


    【解决方案1】:
    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};
    

    【讨论】:

    • “我不清楚你想在那里完成什么。”抱歉,代码中的错字已修复
    • @DrawkcabEsrever,明白了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多