gpt4 book ai didi

c++ - 为链表构建迭代器类(错误 : no matching constructor for initialization)

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:11 25 4
gpt4 key购买 nike

在函数“迭代列表::开始()”中{对于此 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:
};

列表.cpp

#include "List.h"

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

迭代器.h

#include "List.h"

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

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

};

最佳答案

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

你应该使用 forward declaration反而。例如

迭代器.h

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

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

};

关于c++ - 为链表构建迭代器类(错误 : no matching constructor for initialization),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55920140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com