一个类的问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 10:48:49
用MFC建两个对话框,比如A和B
A对话框
#include "B.h"
class A :public CDialog
{
...
B *b;
};
B对话框
#include "A.h"
class B :public CDialog
{
...
A a;
为什么会出现
error C2143: syntax error : missing ';' before '*'
error C2501: 'newtest' : missing storage-class or type specifiers
error C2501: 'm_parent' : missing storage-class or type specifiers
这类的错误?
或者说两个对话框之间怎么才能互相在对方的类里创建对象?
其实问题很简单,就是用VC建一个基于对话框的工程,取名A,再在里面添加一个对话框,取名BDlg,一共写4句代码,在A类的头文件里写上#include "BDlg.h", 在A类里写一句 CBDlg b;
然后在BDlg类的头文件里写上#include "ADlg.h", 在B在类里写 CADlg *a;然后编译就会出错.

这样包含确实是要出问题,你可以这样做躲避这个问题:
A对话框
class B;
class A :public CDialog
{
...
B *b;
};
B对话框
class A;
class B :public CDialog
{
...
A* a;
这样只能声明为指针了,对使用也没有什么不方便的地方.