A类中有个变量a,如果在B类中用到了a,则需要在头文件中定义CA m_xx,然后在B类中添加A.h即A的头文件,通过m_xx.a来实现;同样B类中有个变量b,如果在A类中用到了b,则需要在头文件中定义CB m_yy,然后在A类中添加B.h即B的头文件,通过m_yy.b来实现。。。
这样编译就出现了错误“error C2146: 语法错误: 缺少“;”(在标识符“m_xx”的前面)
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int”
应该是头文件互相包含的问题,但是不可避免要互相使用对方类中定义的变量。。怎么解决这种问题呢??
11 个解决方案
#1
不同类中变量,请使用不同的变量名来定义。。
#2
使用 前置声明(Forward Declarations)来解决
#3
你可以把两个头文件都用到的公共定义在另建一个头文件放进去,
然后让这两个头文件做到相互不包含
然后让这两个头文件做到相互不包含
#4
能不能具体说下 我试了不行
而且我这里A类其实是CView类,B类的cpp中还有Doc的头文件,我知道在B类cpp中写头文件是Doc的要写在View的前面,所以,如果B类的头文件中包含A类的头文件也就是View的头文件,这个地方也会出现问题
而且我这里A类其实是CView类,B类的cpp中还有Doc的头文件,我知道在B类cpp中写头文件是Doc的要写在View的前面,所以,如果B类的头文件中包含A类的头文件也就是View的头文件,这个地方也会出现问题
#5
可以参考前置声明
前置声明 的作用就是这个
前置声明 的作用就是这个
#6
在CA类的头文件中:
class CB;//添加这行代码
class CA
{
//这是你的CA类头文件内容
};
CA类的cpp文件中
#include "B.h"
在CB类头文件中,同上相应的搞上 class CA
CB的cpp中 #include "A.h"
class CB;//添加这行代码
class CA
{
//这是你的CA类头文件内容
};
CA类的cpp文件中
#include "B.h"
在CB类头文件中,同上相应的搞上 class CA
CB的cpp中 #include "A.h"
#7
在包含的类的头文件中这样加:
class 被调用的类名;
class 被调用的类名;
#8
使用了类似3楼的做法
#9
我给的方法也是对的,一分不给,⊙﹏⊙b汗
#10
6楼才是对的,这个方法高明!
#11
请问这是什么原理啊 ? 好神奇
#1
不同类中变量,请使用不同的变量名来定义。。
#2
使用 前置声明(Forward Declarations)来解决
#3
你可以把两个头文件都用到的公共定义在另建一个头文件放进去,
然后让这两个头文件做到相互不包含
然后让这两个头文件做到相互不包含
#4
能不能具体说下 我试了不行
而且我这里A类其实是CView类,B类的cpp中还有Doc的头文件,我知道在B类cpp中写头文件是Doc的要写在View的前面,所以,如果B类的头文件中包含A类的头文件也就是View的头文件,这个地方也会出现问题
而且我这里A类其实是CView类,B类的cpp中还有Doc的头文件,我知道在B类cpp中写头文件是Doc的要写在View的前面,所以,如果B类的头文件中包含A类的头文件也就是View的头文件,这个地方也会出现问题
#5
可以参考前置声明
前置声明 的作用就是这个
前置声明 的作用就是这个
#6
在CA类的头文件中:
class CB;//添加这行代码
class CA
{
//这是你的CA类头文件内容
};
CA类的cpp文件中
#include "B.h"
在CB类头文件中,同上相应的搞上 class CA
CB的cpp中 #include "A.h"
class CB;//添加这行代码
class CA
{
//这是你的CA类头文件内容
};
CA类的cpp文件中
#include "B.h"
在CB类头文件中,同上相应的搞上 class CA
CB的cpp中 #include "A.h"
#7
在包含的类的头文件中这样加:
class 被调用的类名;
class 被调用的类名;
#8
使用了类似3楼的做法
#9
我给的方法也是对的,一分不给,⊙﹏⊙b汗
#10
6楼才是对的,这个方法高明!
#11
请问这是什么原理啊 ? 好神奇