在函数“迭代器列表:: begin()”中,{
该Iteratoring(head)有一个问题“没有匹配的构造函数用于初始化”。 head是一个节点指针,我为此构建了一个构造函数。我不知道问题是什么。

List.h

#include "Iteratoring.h"
struct Node {
    int data;       // value in the node
    Node *next;  //  the address of the next node

    /**************************************
            **      CONSTRUCTOR    **
    ***************************************/
    Node(int data) : data(data), next(0) {}
};
class List {
private:
    Node *head= nullptr;          // head node
    Node *tail;          // tail node
    Iteratoring begin();
public:
};

List.cpp
#include "List.h"

Iteratoring List::begin() {
    return Iteratoring(head);   //The error is here. no matching constructor for initialization
}

Iteratoring.h
#include "List.h"

class Iteratoring {
private:
    Node *current;
public:
    Iteratoring(){
        current= nullptr;
    };

    Iteratoring(Node *ptr){
        current=ptr;
    };

};

最佳答案

这是一个循环依赖性问题。 #include "List.h"中有Iteratoring.h#include "Iteratoring.h"中有List.h

您应该改为使用forward declaration。例如

Iteratoring.h

class Node;
class Iteratoring {
private:
    Node *current;
public:
    Iteratoring(){
        current= nullptr;
    };

    Iteratoring(Node *ptr){
        current=ptr;
    };

};

09-27 02:50