c++你中有我,我中有你的问题

Java_1987 2009-09-10 07:21:06
在c++中不可以这样吗?

class A{
B b;
}
class B{
A a;
}

伪代码。。
java可以的
...全文
155 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
rendao0563 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dirdirdir3 的回复:]
可以不过要先声明:
class B;
class A{
  B b;
}
class B{
  A a;
}

[/Quote]

class B;这种方式只能使用指针。并且不能调用具体的函数。
liuharris 2009-09-11
  • 打赏
  • 举报
回复

可以的,不过要避免重定义,可以使用#ifndef #define来定义一个宏,防止类的重定义 #endif

//FILE A.h
#include "B.h" ①先读B.H,再读第二步
class A ②
{
B b; //③创建B对象时 ,读到第四步,class B为定义类B,在第一步类B已经被定义过了,所以产生重定义
}

//FILE B.h
#include "A.h"
class B ④
{
A a;
}


解决方法
//FILE A.h
#include "B.h" ①先读B.H,再读第二步
#ifndef xx //若xx没被定义
#define xx //则定义xx
class A ②
{
B b; ③//创建B对象时 ,读到第四步,class B为定义类B,
//在第一步类B已经被定义过了,所以跳过这步最后 #endif
};
#endif

//FILE B.h
#include "A.h"
#ifndef xx
#define xx
class B ④
{
A a;
}
#endif

这只是一般的例子,只作参考
huangliguan 2009-09-11
  • 打赏
  • 举报
回复
先声明,后使用。
nmy_share 2009-09-11
  • 打赏
  • 举报
回复
class A{
B b;
}
class B{
A a;
}
最简单最常用的解决方法是首先在类A的头文件的外面加入声明,并且要定义B为指针型变量,如下代码所示:
class B;
class A{
B* b;
}
然后在A源文件中包还B.h就可以了。
在B的头文件里直接包含A.h就可以。

oldjliang 2009-09-10
  • 打赏
  • 举报
回复
可以这样

在A.h里包含B.h
然后在B.h里声明class A同时在B.cpp里包含A.h

其实就是骗一下编译器而已
zengcan 2009-09-10
  • 打赏
  • 举报
回复
当然可以。

//in file a.h
#include "b.h"
class A
{
B b;
}

//in file b.h
#include "a.h"
class B
{
A a;
}

但是要注意*.h中的声明方式,避免重复包含的问题。可以使用#ifudef 和 #endif 宏包含定义头文件的方式解决。具体的,查下百度就知道了。
zengcan 2009-09-10
  • 打赏
  • 举报
回复
当然可以。

//in file a.h
#include "b.h"
class a
{
class b;
}

//in file b.h
#include "a.h"
class b
{
class a;
}

但是要注意*.h中的声明方式,避免重复包含的问题。可以使用#ifudef 和 #endif 宏包含定义头文件的方式解决。具体的,查下百度就知道了。
MoXiaoRab 2009-09-10
  • 打赏
  • 举报
回复
可以,当然可以
风流网民 2009-09-10
  • 打赏
  • 举报
回复
要先声明
dbwizard 2009-09-10
  • 打赏
  • 举报
回复
先声明,后使用
feilinhe 2009-09-10
  • 打赏
  • 举报
回复
c++的东西要先声明后使用的,与JS不一样
allright1199 2009-09-10
  • 打赏
  • 举报
回复
up
xiewhenwe 2009-09-10
  • 打赏
  • 举报
回复
是的,要先声明了才可以。。
roman_v 2009-09-10
  • 打赏
  • 举报
回复
学习..
dirdirdir3 2009-09-10
  • 打赏
  • 举报
回复
可以不过要先声明:
class B;
class A{
B b;
}
class B{
A a;
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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