为链接列表构建Iterator类(错误:初始化时没有匹配的构造函数)

时间:2019-04-30 11:40:07

标签: c++ linked-list iterator

在函数“迭代器列表:: 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;
    };

};

1 个答案:

答案 0 :(得分:0)

这是一个循环依赖性问题。 #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;
    };

};