求助一个VC类声名的问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 00:59:36
求助一个vc问题
我在VC中新建一个基于对话框的工程A
然后我再插入一个对话框,生成另一个类B
我在B的头文件中包含A.h

接下来我在类B里声名A的对象A a就会出错,我改为在B的一个函数b()里声名就不会出错,这是为什么啊
class B (CDlgXXXXXXXX)
{
private
int x;
A a;///这样会出错
B()
{}
}

class B (CDlgXXXXXXXX)
{
private
int x;
B()
{
A a;///这样就对了
}
}
但是我要的不是在函数体里的这种对象
帮帮忙谢谢
试了两种方法还是不行啊 A *a跟A a错误一样啊
以下是错误类弄(可是下面的错误我都改正了,还是说我错,也没少";"类型也指定了,因为我在B(){A a;}是可以的)
missing ';' before '*'
missing storage-class or type specifiers
missing storage-class or type specifiers

A加了B.h,B也加了A.h
不知道是不是哪里还是弄错了,大家再帮帮忙啊,郁闷的很那

我在A里面也用了B里面的数据,当然也只能在函数里面申明,去A里面的B.h就出现一大堆错误了

很有可能的一个原因,你的头文件包含位置不对,如果你想实现自己的目的,头文件A.h需要包含在B.h文件中,而不是.cpp中,另外,不要互相包含,把A包含B的去掉

类重复定义了,你可以这样试试
#ifndef wwwwwwwwwwwwwwww
#define wwwwwwwwwwwwwwww
下面是你自己定义的类
#endif

你重复引用头文件了,使用
#ifndef XXXXX
#define xxxx
#enddef

你不用在类里面定义啊 可以在类上面定义 作为一个宏变量使用

我试了下,没有问题,你是不是把A的名称搞错了,如果你建的工程名为A的话,那么A.h中的类应该是CAApp,而不是A,所以B类应该这么写:
class B : public CDialog
{
private:
CAApp a;//试过了,这样没问题
.
.
.

不知道是不是这个原因,你最好打开A.h看一看类名

估计是书写错误,这种方式我用过多次,不会有问题。