2013-11-20 64 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;

然后在其他两个包含此标头。