君子性非异也,善假于物也。
如有恒,何须三更起,半夜眠;最怕莫,三天打鱼两天晒网,竹篮打水一场空!
posts - 31, comments - 23, trackbacks - 0, articles - 30
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
大瓶子与小瓶子的问题
Posted on 2006-11-15 14:01
neter
阅读(309)
评论(0)
编辑
收藏
引用
所属分类:
程序设计
class
B;
class
A
{
public
:
A(
void
);
~
A(
void
);
B b;
}
;
A::A(
void
)
{
}
A::
~
A(
void
)
{
}
class
B
{
public
:
B(
void
);
~
B(
void
);
A a;
}
;
B::B(
void
)
{
}
B::
~
B(
void
)
{
}
int
main()
{
return
0
;
}
在编译器中编译要报的错误即是: error C2079: 'A::b' uses undefined class 'B'
原因是什么呢?从代码来看,用了类的前视的啊,不应该有什么问题的啊.
但因为在分配内存空间的时候,不知道其class B 的大小,所以没有办法为其分配存储空间,随即报出了一个没有定义的错误.
其解决的方案有两种,如下事例:
方案A:
class
B;
class
A
{
public
:
A(
void
);
~
A(
void
);
B b();
}
;
A::A(
void
)
{
}
A::
~
A(
void
)
{
}
class
B
{
public
:
B(
void
);
~
B(
void
);
A a();
}
;
B::B(
void
)
{
}
B::
~
B(
void
)
{
}
int
main()
{
return
0
;
}
显示地调用一下其构造函数构造一个具体的实例出来即有了固定的存储空间
方案B:
class
B;
class
A
{
public
:
A(
void
);
~
A(
void
);
B
*
b;
}
;
A::A(
void
)
{
}
A::
~
A(
void
)
{
}
class
B
{
public
:
B(
void
);
~
B(
void
);
A
*
a;
}
;
B::B(
void
)
{
}
B::
~
B(
void
)
{
}
int
main()
{
return
0
;
}
用指针来存储其一个地址而已,具体的大小等到用的时候再为其实际分配.
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
[转]Win32应用程序中进程间通信方法分析与比较
BCD码
[转]编写高效的数据库连接池
[MSDN]使用连接池
[转]VC中基于 Windows 的精确定时
基于 Visual C++6.0 的 DLL 编程实现
[后记]大瓶子与小瓶子的问题
大瓶子与小瓶子的问题
用C描述MD5算法
初识MD5算法
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © neter
日历
<
2006年11月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
公告
如有侵犯您的版权,请来信告知,我将立即删除,谢谢!
随笔分类
程序设计(21)
狂人日记(10)
文章分类
Android相关(1)
软件测试初探(5)
数字图像(11)
探索嵌入式开发(4)
网络与通信(3)
英语学习(6)
不错的站点
codeguru
codeproject
csdn
vchelp
搜索
积分与排名
积分 - 41288
排名 - 520
最新评论
1. re: [转]编写高效的数据库连接池
不错
--tianliang
2. re: JPEG压缩编码标准[未登录]
good!
--123
3. re: 初中英语语法学习顺口溜
Thank you
--inliner
4. re: [转]图像处理网络资源[未登录]
好东西哪,,,。。
--可可
5. re: JPEG压缩编码标准
很不错啊,有些地方讲的很不清楚,这个很好
--沙田西瓜
阅读排行榜
1. MFC中获取程序运行的路径(2787)
2. [转]编写高效的数据库连接池(1818)
3. 文件系统监控(1575)
4. C中的跳转语句[非goto](1165)
5. 简单文件分割(06川大考研最后一题)(783)