2013-06-22 46 views
0

我有兩個類聲明如下,但我得到編譯錯誤,它似乎是由於循環#include。有誰知道如何解決這一問題?將父類指針傳遞給子代

我的目的是讓子類保持指向父對象的指針,以便子對象可以訪問父對象的方法和屬性。

#ifndef PARENT_H 
#define PARENT_H 
#include "child.h" 

class Parent 
{ 
public: 
    Child* mychild; 
    Parent(); 
}; 

#endif // PARENT_H 


#ifndef CHILD_H 
#define CHILD_H 
#include "parent.h" 
class Child 
{ 
public: 
    Parent* myparent; 
    Child(); 
}; 

#endif // CHILD_H 

回答

2

只要你只有一個指針存儲類,你不需要在頭文件中提供完整的類定義,你可以使用一個正向類的聲明,就像這樣:

#ifndef PARENT_H 
#define PARENT_H 

class Child; 

class Parent 
{ 
public: 
    Child* mychild; 
    Parent(); 
}; 

#endif // PARENT_H 


#ifndef CHILD_H 
#define CHILD_H 

class Parent; 

class Child 
{ 
public: 
    Parent* myparent; 
    Child(); 
}; 

#endif // CHILD_H 

然後,您必須將parent.h包含在child.cpp中,並將child.h包含在parent.cpp中。

+0

是啊!有效。謝謝你的幫助! – user2512031