2013-11-20 66 views
-1

我有myclassAmyClassB。我想將一個ClassA對象傳遞給ClassB的構造函數。因此,我包括的A頭到B和B的頭球爲A,但我得到這個錯誤classX'沒有指定類型

'myclassB' does not name a type

這裏是我的簡化代碼:

myclassa.h

#ifndef XMLHANDLER_H 
#define XMLHANDLER_H 
#include "mainwindow.h" 
#include "myclassb.h" 

class myclassA{ 
public: 
    myclassA(); 

private: 
    myclassB *mb; 
}; 
#endif // XMLHANDLER_H 

myclassb.h

#ifndef CLASSB_H 
#define CLASSB_H 
#include "myclassa.h" 

class myclassB{ 
public: 
    myclassB(myclassA *newclass); 
    ~myclassB(); 
}; 
#endif // CLASSB_H 

myclassa.cpp

#include "myclassa.h" 

myclassA::myclassA(){} 

myclassb.cpp

#include "myclassb.h" 

myclassB::myclassB(myclassA *newclass) 
{ 
    //do something 
} 

我如何修正這個錯誤?

+3

重複數百次以上。 –

+0

myclassb.h不應該包含myclassa.h,並且應該只包含myclassA的前向聲明,因爲它只使用一個指針,除了聲明的類型A之外不需要其他任何東西。 –

回答

2

您需要在myclassa.h中聲明class myclassB;

2

沒有必要包括頭myclassB在頭myclassA

或者你可以創建一個單獨的頭,將包含聲明

類MyClassA; class MyClassB;

然後在其他兩個包含此標頭。