2012-07-27 57 views
3

我有两个简单的类,非常简单一个就像master表,并且包含指向class 2的指针列表,而class Two包含一个指向class One的指针。在每类有它调用了指针方法的功能,但我得到错误,如 错误C2027:使用未定义的类型头文件中的C++交叉指针

---- class One.h" 
#include "Two.h" 

class One { 
public: 
list<Two*> something; 
void t(){pointer on Two call methods} 
}; 

---------class Two.h 
class One; 
class Two { 
public: 
One* something; 
void t(){pointer on One call methods} 
}; 

如何解决这个问题呢?

回答

9

将您的方法defenition移动到.cpp并包含所需的标题和类型defenition。

Two.h 
class One; 
class Two { 
public: 
    One* something; 
    void t(); 
}; 

Two.cpp: 
void Two::t() {...} 

这是必需的,因为编译器不能生成代码调用一个未定义的类型的方法

+2

由此,也可以避免包括Two.h在One.h通过用'类代替它二;'。 – Black 2012-07-27 14:01:24

+0

@黑:是的,这会加快编译速度 – Andrew 2012-07-27 14:02:18