任何人都可以幫助我解決我在這裏得到的循環引用錯誤。試圖解決我的deque類和樹類之間的循環引用錯誤
我已經創建了我自己的deque
類,breadthFirst
方法使用FibTree
。
下面是來自單獨的標題和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
情況下,所以我加了#include "deque.h"
向前聲明class deque.h"
以上,在fibtree。 h;但這扔16編譯錯誤的deque.h
類,如這三個錯誤:「FibTree」尚未聲明對FibTree::Node* data; in
類dequeNode {...`
會有人能夠在哪些方面我可能會去這裏錯了嗎?
謝謝, 亞歷克斯
謝謝,我確實也有'const'聲明的不確定性。我覺得在這裏我確實有一個循環依賴問題,但是要感謝所有人(@JoachimPileborg @Oswald @Akobold)指出我不需要轉發declare,只需將'#include「deque.h」'添加到'fibtree .h'。現在都在工作:-) – Alex2134 2013-04-04 18:20:06