社区
C++ 语言
帖子详情
类得相互引用
大鸟的小天空
2006-04-03 05:21:14
class aa
{
public:
bb * b;
}
class bb
{
public:
aa * a;
}
这样得代码不能编译通过
g++ -c aa.cpp
为什么?
该怎么作。
...全文
170
8
打赏
收藏
类得相互引用
class aa { public: bb * b; } class bb { public: aa * a; } 这样得代码不能编译通过 g++ -c aa.cpp 为什么? 该怎么作。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
OOPhaisky
2006-04-03
打赏
举报
回复
不能编译通过的原因:编译器是顺序扫描每个原文件的,而且每次只能处理一个原文件,而当编译器看到class aa中声明的“bb * b”时,它并不知道bb是什么东西(因为bb此时还没有出现),所以编译出错。
所以,需要加一个“前向声明”。
OOPhaisky
2006-04-03
打赏
举报
回复
同意jiajun2001(嘉俊) 的做法。
wk19830318
2006-04-03
打赏
举报
回复
增加bb的说明
postren
2006-04-03
打赏
举报
回复
类定义后别忘了分号
class bb;
class aa
{
public:
bb * b;
};
class bb
{
public:
aa * a;
};
Jagen在路上
2006-04-03
打赏
举报
回复
class bb;
class aa
{
public:
bb * b;
}
class bb
{
public:
aa * a;
}
postren
2006-04-03
打赏
举报
回复
类定义后别忘了分号
class bb;
class aa
{
public:
bb * b;
};
class bb
{
public:
aa * a;
};
adintr
2006-04-03
打赏
举报
回复
http://community.csdn.net/Expert/topic/4627/4627316.xml?temp=.2166559
postren
2006-04-03
打赏
举报
回复
在class aa
增加bb的说明
【C++】两个类的
相互
引用
有时候在设计数据结构的时候,可能会遇到两个类需要
相互
引用
的情形。比如类A有类型为B的成员,而类B又有类型为A的成员。 那么这种情形下,两个类的设计上需要注意什么呢? 本文实例源码github地址:https://github.com/yngzMiao/yngzmiao-blogs/tree/master/2021Q1/20210103。 同一文件 尝试方案 将A和B的定义都放在一个文件中,例如: #include <iostream> class A { public: A()
消除类之间的
相互
引用
理论
相互
引用
是指两个类之间
相互
引用
了对方。从类图上看,
引用
箭头是双向的。
相互
引用
是一种不够良好的设计。从高层次(设计)来说,类之间的
引用
关系应该是单向的,如果类A了解类B,说明在某种程度上类A比类B的层次要高一些,如果同时类B也了解类A,则说明类的设计有问题,两个类有混杂的部分,比如可能类的职责不够单一,或者类的职责不够明确,总之类的设计者没有把二者的关联分析清楚。应考虑重新设计一下,比如
两个类的
相互
引用
在编程时,经常会遇到两个类
相互
使用的情况,这时候就用到两个类的
相互
引用
,这时候该怎么处理呢? 在查阅资料和同事讨论后,知道这种交叉使用的情况是可以处理的。 在各自头文件中声明对方,而不用包含,即要用class *, 而不用 #include ;在对应的实现类中
引用
#include 。 例如:有两个类 A 和 B。 class B; class A { private:
C++中两个类
相互
包含
引用
问题
在构造自己的类时,有可能会碰到两个类之间的
相互
引用
问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { int i; B b; } class B { int i; A* a; } 请注意上面的定义内容,一般情况下是不能出现类A,类B
相互
引用
都定义对象,即如下的样子: class A { int i; B b; } class B { int i; A a; } 在这种情况下,想想能够有a.b.a.b.a.b.a.b.a.b…………,很有点子子孙孙无穷尽之.
两个类
相互
包含
引用
的问题
在构造自己的类时,有可能会碰到两个类之间的
相互
引用
问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { int i; B b; } class B { int i; A* a; } 请注意上面的定义内容,一般情况下是不能出现类A,类B
相互
引用
都定义对象,即如下的样子: class A { int i;
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章