问一下关于包含头类的问题。类A我要定义一个类B的成员对象,类B也要定义类A的成员对象。

cen_jin_long 2008-04-01 10:37:12
请问应该怎么样实现呢?

//A.h file
class A
{
};

//B.h file
class B
{
};

在A类中定义一个成员变量为B对象。
在B类中定义一个成员变量为A对象。

请问大家有何方法?
...全文
116 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
cen_jin_long 2008-04-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 arong1234 的回复:]
如果按照你的设计,A,B类自身构成一个间接的死循环,这怎么可能做得了?
[/Quote]


多谢荣哥指点!

为什么会简单死循环呢?有点不明白。本人愚钝,学得不好。
liveforme 2008-04-02
  • 打赏
  • 举报
回复
class B;
class A{
public:
void UseB(){ B b;}
}
这样的问题是class B在最上面只是声明,不是定义
所以不能用未定义class B去创建一个对象。。
arong1234 2008-04-01
  • 打赏
  • 举报
回复
如果按照你的设计,A,B类自身构成一个间接的死循环,这怎么可能做得了?
cen_jin_long 2008-04-01
  • 打赏
  • 举报
回复

看来这不是个好的设计方法,有一个一定要用指针?晕了。
arong1234 2008-04-01
  • 打赏
  • 举报
回复
不当匪首好多天了
[Quote=引用 13 楼 wuyu637 的回复:]
引用 10 楼 arong1234 的回复:
你是哪位?偶像我的人太多了:)
引用 7 楼 wuyu637 的回复:
我靠。。居然看见阿荣了。。。偶像啊。。。


以前在vckbase上混过几个星期。。。在大学的时候很崇拜你。。:(
[/Quote]
wuyu637 2008-04-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 arong1234 的回复:]
你是哪位?偶像我的人太多了:)
引用 7 楼 wuyu637 的回复:
我靠。。居然看见阿荣了。。。偶像啊。。。
[/Quote]

以前在vckbase上混过几个星期。。。在大学的时候很崇拜你。。:(
enewell 2008-04-01
  • 打赏
  • 举报
回复

学习
星羽 2008-04-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 arong1234 的回复:]
你是哪位?偶像我的人太多了:)
引用 7 楼 wuyu637 的回复:
我靠。。居然看见阿荣了。。。偶像啊。。。
[/Quote]


- -b
arong1234 2008-04-01
  • 打赏
  • 举报
回复
你是哪位?偶像我的人太多了:)
[Quote=引用 7 楼 wuyu637 的回复:]
我靠。。居然看见阿荣了。。。偶像啊。。。
[/Quote]
星羽 2008-04-01
  • 打赏
  • 举报
回复
用指针或者引用吧
effective_person 2008-04-01
  • 打赏
  • 举报
回复
怎么会设计类这样的牵强呢???

wuyu637 2008-04-01
  • 打赏
  • 举报
回复
我靠。。居然看见阿荣了。。。偶像啊。。。
jackzhhuang 2008-04-01
  • 打赏
  • 举报
回复
1楼说了
arong1234 2008-04-01
  • 打赏
  • 举报
回复
彼此定义对方对象的方法造成对象的自我循环,这是违反规定的,A包含B的实例,B包含A的实例,这个对象将是无穷大的

如果不是对象而是指针或者引用,可以使用超前引用

http://www.vckbase.com/bbs/prime/viewprime.asp?id=431
wuyu637 2008-04-01
  • 打赏
  • 举报
回复
class1.h
===========================================
#ifndef __class1__
#define __class1__
#include "class2.h"

class class1{

public:
class2 temp;
int i;
int j;

};


#endif

==============================================

class2.h
#ifndef __class2__
#define __class2__

#include "class1.h"
class class1;

class class2{

public:
class1* c1;
int a;
int b;
class2(){

};

};

#endif
==============================================
交叉应用类的关键在于,其中一个类可以做为成员出现在另一个类里,但是另一个类的成员类表里只能是一个指向一个类的指针,并且要在出现指针类的头文件里指出,指向的对象是一个类。。
ryfdizuo 2008-04-01
  • 打赏
  • 举报
回复

class Car;
class Apple;
class Apple
{
public:
void abc(Car *aCar);
};
class Car
{
public:
Apple anApple;
void bcd(){ cout<<"The car is excuted!"<<endl;}
};
void Apple::abc(Car *aCar)
{
aCar->bcd();
}
int main()
{
Apple app;
Car car;
app.abc(&car);
return 0;
}
wuyu637 2008-04-01
  • 打赏
  • 举报
回复
嵌套类。。


ryfdizuo 2008-04-01
  • 打赏
  • 举报
回复
注意前置申明;
通过成员指针实现;
内容概要:本文系统梳理了SQL领域的核心知识点与高频面试题,涵盖基础概念、查询语法、常用函数、高级查询技巧、事务与锁机制以及典型代码实操题六大模块。内容深入解析了SQL分、SELECT语句的真实执行顺序、各JOIN的差异、索引工作机制(包括覆盖索引、索引下推、最左前缀原则)、事务ACID特性、隔离级别及其引发的并发(如脏读、不可重复读、幻读),并详细介绍MVCC多版本并发控制的实现原理。同时结合实际场景,讲解窗口函数、子查询优化、IN与EXISTS的选择策略、行列转换、去重处理、连续数据识别等编程实战,全面覆盖企业面试和技术应用中的关键点。; 适合人群:具备基本数据库理论知识、正在准备后端开发、数据分析或数据工程岗位技术面试的人员,尤其适合工作1-3年希望深化SQL理解、提升复杂查询能力的开发者。; 使用场景及目标:①深入理解SQL底层运行机制,如执行流程、索引优化策略、事务隔离实现原理;②掌握高频面试题的解题思路与编码实现,提升在真实业务中处理复杂数据查询、性能调优和数据建模的能力; 阅读建议:建议结合MySQL等实际数据库环境动手演练文中所有SQL示例,重点关注执行顺序逻辑、索引失效场景的规避、窗口函数的应用模式以及事务机制的实践验证,注重理解而非死记硬背,真正掌握背后的原理与设计思想。
内容概要:本文提出了一种计及光伏电站快速无功响应特性的分布式电源优化配置方法,并提供了完整的Matlab代码实现。该方法充分考虑光伏电站通过电压源变流器(VSC)实现快速无功调节的能力,构建了以提升配电网电压稳定性与运行效率为目标的优化模型。研究中采用了带有电流闭环控制的两级VSC结构,利用αβ坐标变换实现精确的电流反馈控制,有效提升了系统的动态响应性能和电能质量。方案不仅涵盖从系统建模、控制器设计到仿真验证的全流程,还重点分析了实时无功-有功控制器的动态特性,适用于高比例可再生能源接入背景下的新型电力系统规划与运行优化。; 适合人群:面向具备电力系统分析、新能源并网控制或优化算法基础的科研人员,包括从事相关课题研究的研究生、高校教师及工程技术人员,尤其适合熟悉Matlab/Simulink仿真环境并希望深入掌握光伏电站无功控制与配电网优化协同机制的专业人士。; 使用场景及目标:①应用于含有高渗透率光伏发电的配电网中,开展分布式电源的选址与定容优化;②研究光伏电站参与电网无功支撑的能力及其对电压稳定的影响机制;③为开发具备快速动态响应能力的新能源并网控制系统提供理论依据与可复现的仿真平台支持。; 阅读建议:建议读者结合文中提供的Simulink仿真模型与Matlab代码,逐模块理解控制器设计逻辑与优化算法实现流程,重点关注αβ变换在电流控制中的作用机理以及无功快速响应对系统整体性能的提升效果,同时可进一步拓展至其他分布式电源型或多目标协同优化场景的应用研究。
内容概要:本文介绍了在MATLAB R2025b环境中实现基于傅里叶特征(Fourier Feature)的物理信息神经网络(PINN),用于求解一维Burgers方程的连续近似解。文章系统阐述了项目的目标与意义,包括精准求解具有多尺度特性的Burgers方程、评估傅里叶特征对PINN谱偏置的缓解效果、探索MATLAB平台下的PINN实现范式,并构建可扩展的物理约束深度学习工程框架。针对Burgers方程在低黏性条件下出现的高梯度和近激波结构,传统PINN因谱偏置难以高效捕捉高频成分,而引入傅里叶特征输入层可将原始输入映射到高维周期基空间,显著增强网络对复杂频率结构的表达能力。文中详细描述了模型架构设计,涵盖傅里叶频率矩阵构造、隐藏层结构、激活函数选择(如tanh)、损失函数组成(融合方程残差、初边值条件)以及自定义训练循环的实现流程。同时讨论了关键挑战及应对策略,如多尺度解的频率配置、损失权重平衡、训练稳定性保障,以及MATLAB R2025b中dlnetwork接口限制下的梯度计算与参数更新细节。附带的代码示例展示了从参数定义、采样点生成、特征映射、网络构建到损失计算与Adam优化器手动实现的全过程。; 适合人群:具备一定深度学习和偏微分方程背景,熟悉MATLAB编程,从事科学计算、物理建模或机器学习研究的研发人员与研究生。; 使用场景及目标:① 掌握如何利用傅里叶特征提升PINN对高频、多尺度物理场的逼近能力;② 学习在MATLAB中构建端到端的物理信息神经网络,特别是自定义训练循环与自动微分的应用;③ 借鉴可复用的模块化工程结构,迁移至其他PDE(如热传导、波动方程等)的神经网络求解;④ 理解并实践损失权重调节、频率参数调优、训练稳定性控制等关键技术环节。; 阅读建议:此资源以实际工程项目为导向,强调理论与实现结合,建议读者结合提供的代码片段在MATLAB环境中动手复现,并尝试调整频率数量、网络深度、损失权重等超参数,深入理解各模块对求解精度与收敛性的影响,同时注意版本兼容性,确保使用R2025b及以上环境运行。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧