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