比如过class1用到了class2,class2又用到class1,我直接在各自的头文件里面分别包含class1.h和class2.h,出错;在其中一个里面包含class1.h另一个类的头文件里面写上class class2;报错说class2为未定义类型。帮我解答解答吧,多谢了。
解决方案 »
- 消息队列MSMQ
- 50分,POS机打印的问题,通过串口向打印机发送指令,如何使其自动换行?
- 怎么在VC编辑框控件中写字
- 串行化类问题
- 请问各位大虾关于初学VC++数据库编程的种种简单问题,请给予详细提示,我笨~~~
- 到底缺什么?
- 两个对话框之间怎样访问对方的变量?请高手赐教.
- 谁用过RealSystem SDK
- CSocket
- 本人两年来一直使用VC做一些不大的管理及网络方面的小东西,现想加入比较正规的软件公司,心里感到真没底,不知道加入项目组后有哪些不同?项目组成员的协作工作主要用什么工具?用DLL?还有对COM要求高不高?
- 为什么我的字符串传不过去呀!?
- 求教各位大虾!如何在VC下读写磁盘FAT和分区表,我具体要做些什么呢?
class CCircle;class CPoint
{
unsigned x;
unsigned y;
bool IsInCircle(CCircle *Circle);
};class CCircle
{
public:
unsigned Radius;
CPoint Center;
};bool CPoint::IsInCircle(CCircle *Circle)
{
return ( ((x-Circle->Center.x)*(x-Circle->Center.x)
+(y-Circle->Center.y)*(y-Circle->Center.y))
<=Circle->Radius*Circle->Radius );
}
void main()
{
CPoint Center;
CPoint Point;
CCircle Circle;
Center.x=0;
Center.y=0;
Point.x=2;
Point.y=3;
Circle.Radius=3;
Circle.Center=Center;
if (Point.IsInCircle(&Circle))
cout<<"The point is in the circle."<<endl;
else
cout<<"The Point is not in the circle."<<endl;
}
// b.h
class A;
class B
{
class A* a; ......
}这样在类A的声明文件中就可以包含类B的声明文件;
#include "b.h"class A
{
.....
}
提问的人没有搞懂声明和定义的区别
实例和指针的不同.
#include 不能乱放!!
非常不好编程风格!!!!!!!!!!1
:)
{
B * m_pB;
};class B
{
A mA;
}关键有两点:其中的一个类需要提前声明(forward declaration);
被提前声明的类在其被具体定义之前只能声明该类的指针或引用,如上面class A定义中只能声明class B的指针(或引用)。
在类的定义结束(编译器在遇到类定义的右花括号之后),用该类来声明类实例对象,或对象指针,引用都是合法的。如上面的类B中定义类A的实例对象就是正确的,因为在此前类A的定义已结束.反之在A中声明B的对象实例就是错误的.