2016-08-03 130 views
0

後有點搜索我才知道,我可以這樣調用父方法:在父類中調用一個方法

基類:

class Base 
{ 


public: 

    Base(); 
    child *children; // instance of the child is needed on the base 
    float theDelegate(char *arg); 

然後子類:

class child: public Base //**** problem 
{ 


public: 
... 

但是,當我試圖添加public Base行時,我收到一個錯誤,他不知道Base

於是我包括basechild,與此:

#include "Base.hpp" 

這時候孩子可以看到父,但權當我包括在childbase我就得到一個錯誤父母,因爲他們包括彼此

child *children; - unknown type name child - appear only if I include parent in the child 

我在這裏做錯了什麼?應該怎麼做?

+2

向前聲明? –

+0

具體答案?根據這裏的問題,這個問題,我做了他們所展示的。 – Curnelious

+0

上課的孩子;在你的基地 –

回答

5

使用前聲明:

文件Base.hpp:

class Child; // forward declaration 

class Base { 
public: 
    Child* child; 
    // whatever 
}; 

文件Child.hpp:

#include "Base.hpp" 

class Child : public Base { 
    // whatever 
}; 
+0

而不是包括在基地的孩子? – Curnelious

+2

@Curnelious是的,而是。編譯器不需要知道任何關於「Child」的實現,因爲它只需要指向此翻譯單元中的「Child」。 –

+0

那麼這將無法正常工作。這樣做會造成更多的錯誤 – Curnelious