社区
C语言
帖子详情
循环引用的问题
FatGarfield
2002-11-19 05:36:51
我在VC++下编了一个程序,用了自定义的两个类C1, C2,我需要C1类的对象知道C2类的信息,切C2类的对象知道C1类的信息。所以需要C1.h包含C2.h并且C2.h包含C1.h,这样产生了循环引用问题,编译时出现错误,请问如何解决?
...全文
394
11
打赏
收藏
循环引用的问题
我在VC++下编了一个程序,用了自定义的两个类C1, C2,我需要C1类的对象知道C2类的信息,切C2类的对象知道C1类的信息。所以需要C1.h包含C2.h并且C2.h包含C1.h,这样产生了循环引用问题,编译时出现错误,请问如何解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
boolean6199
2002-11-20
打赏
举报
回复
SOMEHEAD_H
这样的定义更合理~
北极猩猩
2002-11-20
打赏
举报
回复
向通用的情况一样,在所有.h文件中加入
#ifndef SOMEHEAD_H
#define SOMEHEAD_H
.......
#endif
dhy311
2002-11-20
打赏
举报
回复
搂主说的那个是相当于递归,显示生活中有这样的对象嘛?
ji_da_sheng
2002-11-20
打赏
举报
回复
你可以这样:
class B;
class A
{
....
};
class B
{
....
};
你将它们放在同一个文件里就行了。
sokoban
2002-11-20
打赏
举报
回复
#ifndef
#define
...
#endif
middle
2002-11-19
打赏
举报
回复
你可以这样做:
class A
{
B* B;
}
class B
{
A* A;
}
这个时候你仅仅需要在两个.h文件中分别加入class A;和class B;这两个前向声明就可以了,无需include对方的.h文件。
或者可以将其中某个指针改成成员对象,这个时候只要在改动的那个.h中包含另一个.h就可以了。
如果你两个都改成成员对象了———— #@$%^&*&(*(*
caizzrr
2002-11-19
打赏
举报
回复
agree with softman_2000(vc小虫)
boolean6199
2002-11-19
打赏
举报
回复
没有亲自验证过,大家讨论。
boolean6199
2002-11-19
打赏
举报
回复
可以试一下条件编译,例如:
//c1.h
#ifndef CLASS_C2
#include c2.h
#endif
……//文件主体
//c2.h
#define CLASS_C2
#ifndef CALSS_C1
#include c1.h
#endif
……//文件主体
//具体没碰到过这样的情况,因而没真正使用过,可以试一下。
//事实上如果这样的话,我想可以解决更多的麻烦:
//c1.h
#ifndef CLASS_C1
#define CLASS_C1
……//文件主体
#endif
//c2.h
#ifndef CLASS_C2
#define CLASS_C2
……//文件主体
#endif
//这样即使重复、嵌套include也没问题。
softman_2000
2002-11-19
打赏
举报
回复
你可以这样试一下
c1.h文件
class C2; //说明一下c2,告诉c1,类c2已经存在。
class C1
{
public:
C1();
};
c1.cpp文件中
#include "c1.h" //包含头文件。
C1::C1()
{
}
c2.h文件中
class C1;
class C2
{
public:
C2();
};
c2.cpp中
#include "c1.h"
C2::C2()
{
}
_铭子_
2002-11-19
打赏
举报
回复
你在你的
c1.h里
这样:
class C2.//放在C1声明的前面。完成C2的声明。
不要在包含C2的头文件了。
你试一下,不行的话,给我发短信。
shared_ptr
循环
引用
问题
以及解决方法
shared_ptr
循环
引用
问题
以及解决方法一、shared_ptr
循环
引用
问题
例子一例子二例子三二、weak_ptr解决
循环
引用
问题
一、shared_ptr
循环
引用
问题
什么是
循环
引用
,两个对象相互使用shared_ptr指向对方。造成的后果是:内存泄漏 例子一 下面是
循环
引用
的例子 #include <iostream> #include <memory> using namespace std; class A; class B; class A { public:
【iOS】——
循环
引用
问题
对象A和对象B,相互
引用
了对方作为自己的成员变量,只有当自己销毁时,才会将成员变量的
引用
计数减1,这就导致了A的销毁依赖于B的销毁,同样B的销毁依赖于A的销毁,这样就造成了
循环
引用
问题
。对象A内部强持有obj,对象B内部强持有obj,若此时对象A的obj指向对象B,同时对象B中的obj指向对象A,就是相互
引用
。对象N,每个对象中都强持有一个obj,若每个对象的obj都指向下个对象,就产生了多
循环
引用
。假如有一个对象,内部强持有它的成员变量obj,若此时我们给obj赋值为原对象时,就是自
循环
引用
。...
怎么解决
引用
计数 GC 的
循环
引用
问题
?
引用
计数方式 GC 存在
循环
引用
问题
,导致无法辨别无用对象,而 GC ROOT 方式不存在
循环
引用
的
问题
引用
计数和 GC ROOT 的实现机理很易理解,面试时大家都能流利应答,那怎么才能脱颖而出呢?思考一个
问题
:不通过 GC ROOT,仍使用
引用
计数方式,怎么解决它的
循环
引用
问题
? 解答此
问题
前,通过目标驱动法来想象一下,若 Get 了此知识点,可以这样应用到面试中: 面试官: 说一下垃圾回收机制吧 我: ...可以通过强、弱
引用
计数结合方式解决
引用
计数的
循环
引用
问题
,实际上 Android .
循环
引用
问题
解决
一、
问题
如下:在典籍增删改查功能完成后,我开始制作AI问答功能,但在这之后查询具体典籍就出现了如上图所示的
循环
引用
问题
二、
问题
原因由于在Classic中有
引用
QA,又因为最初设计的QA功能是能够依据Classic_id来生成,因此也
引用
了Classic,因此造成了
循环
引用
问题
三、
问题
解决。
jackson使用@JsonManagedReference和@JsonBackReference注解来处理对象
循环
引用
问题
1.简介 jackson序列化时一般会调用getter方法来获取属性对象,而Java对象可以
循环
引用
,这样就会导致无限
循环
获取属性,最终堆栈溢出,jackson提供了两个注解来处理
循环
引用
问题
: JsonManagedReference:管理
引用
的一方,可以理解为具有
引用
的一方,被这个注解的属性序列化时会正常获取 JsonBackReference:反向
引用
,可以理解为此属性为反向
引用
,被这个注解的属性序列化时会忽略 2.实体 import com.fasterxml.jacks...
C语言
70,031
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章