gpt4 book ai didi

c++ - 试图解决我的双端队列类和树类之间的循环引用错误

转载 作者:行者123 更新时间:2023-11-27 23:16:55 25 4
gpt4 key购买 nike

谁能帮我解决我遇到的循环引用错误。

我已经创建了我自己的 deque 类,它被 FibTreebreadthFirst 方法使用。

以下是单独的 header 和 CPP 文件的重点。 FibTree 文件中存在不完整类型的无效使用前向声明错误 的问题。我在下面的代码行中标记了这些错误。

deque.h

#ifndef DEQUE_H
#define DEQUE_H

#include "fibtree.h"

class dequeNode {
public:
FibTree::Node* data;
};

class dequeList {
public:
dequeNode* firstNode;
dequeNode* lastNode;

dequeList( void );

void enque( FibTree::Node* );
FibTree::Node* deque( void );
};

#endif

fibtree.h

#ifndef FIBTREE_H
#define FIBTREE_H

#include <iostream>

class dequeList; // ERROR: Forward declaration of 'struct dequeList' (2 ERRORS)

class FibTree {
public:
class Node {
...
};

Node const* root; // 'root' pointer to constant Node

FibTree (int);

void breadthFirst(Node const* root);

};
#endif

fibtree.cpp

#include "fibtree.h"

void FibTree::breadthFirst(Node const* root) { // Breadth-first traversal
dequeList* list = new dequeList(); //*** ERROR: Invalid use of incomplete type 'struct dequeList'
list->enque(root); //*** ERROR: Invalid use of incomplete type 'struct dequeList'
}

main.cpp

#include <iostream>

#include "deque.h"
#include "fibtree.h"

int main (int argc, const char* argv[]) {
...

我读过类似的帖子 HERE ,在我的 dequeList 例子中应该包含完整的声明,所以我在前向声明 class deque.h 上方添加了 #include "deque.h" ",在 fibtree.h 中;但这向 deque.h 类抛出了 16 个编译错误,例如这三个错误:'FibTree'尚未针对 FibTree::Node* 数据声明;在类 dequeNode {...`

谁能指出我在这里可能出错的地方?

谢谢,亚历克斯

最佳答案

文件 fibtree.h 似乎缺少一个 #万一在最后,并在 fibtree.cpp 的开头添加 #include "deque.h"并在 deque.h 中更改 void enque( FibTree::Node* ); void enque( const FibTree::Node* )

关于c++ - 试图解决我的双端队列类和树类之间的循环引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15809320/

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