1)use #ifndef #endif 2)declare those two class in same file for example class B;class A { B * m_pB; };class B { A mA; }关键有两点:其中的一个类需要提前声明(forward declaration); 被提前声明的类在其被具体定义之前只能声明该类的指针或引用,如上面class A定义中只能声明class B的指针(或引用)。 在类的定义结束(编译器在遇到类定义的右花括号之后),用该类来声明类实例对象,或对象指针,引用都是合法的。如上面的类B中定义类A的实例对象就是正确的,因为在此前类A的定义已结束.反之在A中声明B的对象实例就是错误的.
2)declare those two class in same file
for example
class B;class A
{
B * m_pB;
};class B
{
A mA;
}关键有两点:其中的一个类需要提前声明(forward declaration);
被提前声明的类在其被具体定义之前只能声明该类的指针或引用,如上面class A定义中只能声明class B的指针(或引用)。
在类的定义结束(编译器在遇到类定义的右花括号之后),用该类来声明类实例对象,或对象指针,引用都是合法的。如上面的类B中定义类A的实例对象就是正确的,因为在此前类A的定义已结束.反之在A中声明B的对象实例就是错误的.
在C1.CPP中#INCLUDE “C2.H”.
在C2。CPP中#INCLUDE “C1。H”。
这样的循环include, 确实很容易引起问题的。
有待学习
而想在CMYDLG中申明成员变量CMYSOCKET m_listen; CNYSOCKET m_connect;(头文件为MYDLG。H)
那么,该怎样在MYSOCKET。CPP和MYDLG。CPP中使用头文件了?我在MYSOCKET。CPP中#INCLUDE “MYDLG。H”,结果总是出错。
请各位高手帮小弟一个忙。
class CMyDlg;然后在MySocket.cpp中,#include "MyDlg.h"然后在MyDlg.h中,#include "MySocket.h"