нет подходящего конструктора для инициализации структуры listNode - PullRequest
0 голосов
/ 05 июня 2018

Следующий метод 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{

это нене имеет смысла для меня.Как ясно, я привел два аргумента в моей инициализации, и он должен использовать лексикографическое связывание параметров с реальными параметрами.

1 Ответ

0 голосов
/ 05 июня 2018
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};
...