谁能帮助我解决我在这里遇到的循环引用错误。
我创建了自己的deque
类,该类由breadthFirst
的FibTree
方法使用。
以下是来自单独的Header和CPP文件的重点内容。在FibTree
文件中存在无效使用不完整类型和转发声明错误的问题。我已经在下面的代码行中标记了这些错误。
双端
#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
的情况下,应包括完整的声明,因此我在fibtree.h中的前向声明#include "deque.h"
上方添加了class deque.h"
;但这给deque.h
类带来了16个编译错误,例如这三个错误:没有针对FibTree::Node* data; in
类dequeNode {...`声明'FibTree'。有人能强调我可能在这里出问题吗?
谢谢,
亚历克斯
最佳答案
文件fibtree.h似乎缺少
#万一
在结尾处,在fibtree.cpp的开头添加#include“ deque.h”,在deque.h中更改void enque(FibTree :: Node *);使enque(const FibTree :: Node *)无效