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