社区
C++ 语言
帖子详情
有关类定义与声明的问题。
mben
2003-09-11 07:00:59
我要定义两个类:类1和类2,其中类1中有成员函数以类2为参数类型,且类2中又有成员函数以类1为参数类型,类1又要以一个类2的成员函数为友员.......
我知道这样写程序有些不elegant,但我想知道能不能用定义与声明的方法解决
...全文
46
15
打赏
收藏
有关类定义与声明的问题。
我要定义两个类:类1和类2,其中类1中有成员函数以类2为参数类型,且类2中又有成员函数以类1为参数类型,类1又要以一个类2的成员函数为友员....... 我知道这样写程序有些不elegant,但我想知道能不能用定义与声明的方法解决
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangyangcheng
2004-02-12
打赏
举报
回复
也就是說前置聲明后只其指針或引用?
dragonlw
2003-09-16
打赏
举报
回复
我来说说
你在前边仅仅声明一个类即:
class a;
但你不能够确定这个类的大小,编译器肯定不知道
你声明个引用或则指针这个可以!
具体的你可以参考 thinking in c++
但要声明个具体的对象,那就是行不通的了。
awant2k
2003-09-16
打赏
举报
回复
如果不用指针,编译器不知道引用类的大小和构造函数
goodluckyxl
2003-09-15
打赏
举报
回复
nmgpy(nmgpy) ( ) 信誉:100
要先声明class a ;否则出错
^&^
jp311
2003-09-14
打赏
举报
回复
我认为
在构造A object的时候必须确切的知道B object的size。只有声明没有定义编译器没能力确定B object的size(因为B对象也要知道A oject的size,其不可能在A对象size没有确定之前就决定自己的size,所以B class是不会在A class定义之前就定义成功的)。而指针就不同了,不管你object有多大,我指针size都是确切值,所以就不用担心A object的size不确定的问题了
mben
2003-09-14
打赏
举报
回复
to: jiangpeng(JP)
你说的方法到是可行,谢谢.但能说说为什么"只能用指针或引用。即使用前置声明B也没有办法直接使用B类型"么.
bestsmoke
2003-09-12
打赏
举报
回复
class A
{
private:
{
void Go(B *p);
}
public:
{
friend B::fn()
}
}
class B
{
private:
{
void fn(A *p);
}
}
jp311
2003-09-12
打赏
举报
回复
to wkkevin(傻子中的天才)
你有没有试过,就在那同意。
用个编译器试试下面的代码,再说是不是正确方法
class A;
class B;
class A {
friend class B;
public:
void f(B) {}; // 1.
};
class B {
public:
void f(A) {};
};
Yssss1980
2003-09-12
打赏
举报
回复
靠,写出这么烂的class
循环引用基本上都是可以避免
好好再次考虑你的类的设计
wkkevin
2003-09-12
打赏
举报
回复
回复人: robertnet(三极管) ( ) 信誉:100 2003-09-11 23:49:00 得分:0
可以用前置声明的方法来解决未定义的问题。
class a;
class b;
这是正确的方法。
robertnet
2003-09-11
打赏
举报
回复
可以用前置声明的方法来解决未定义的问题。
class a;
class b;
jp311
2003-09-11
打赏
举报
回复
class A {
friend class B;
public:
void f(B*) {}; // 1.
};
class B {
public:
void f(A) {};
};
1. 只能用指针或引用。即使用前置声明B也没有办法直接使用B类型
nmgpy
2003-09-11
打赏
举报
回复
在最上边少了class a;
class a;
class b
{
public:
static void bFun(a * a1){}
};
class a
{
public:
friend void b::bFun(a * a1);
void aFun(b b1){}
};
nmgpy
2003-09-11
打赏
举报
回复
class b
{
public:
static void bFun(a * a1){}
};
class a
{
public:
friend void b::bFun(a * a1);
void aFun(b b1){}
};
看看是否符合仁兄的要求
thrillers
2003-09-11
打赏
举报
回复
up
C++中的
类
——
类
的
定义
和
声明
面向对象最大的特征就是提出了
类
和对象的概念。在以面向对象的方式开发应用程序时,将...一、
类
的
定义
class/struct
类
名 //
类
头 {数据和方法的
定义
(可能含有
类
型成员)}; //
类
体 1、使用class和struct的...
类
的
声明
与
定义
什么是
类
的
声明
与
定义
? 一、变量的
声明
与
定义
很容易区分。
声明
只是告诉编译器有这么一个变量,但是没有为它分配空间;
定义
则是为该变量分配空间。所以变量可以重复
声明
,但是不能重复
定义
。 那么,...
c++
类
的
定义
与
声明
1.
类
的
定义
与实现 首先我们先要弄明白.cpp文件和.h文件的区别,cpp文件是需要编译的文件,是一个独立的编译单元,而h文件不需要编译,只是用于预处理。 通常我们会在cpp文件中,完成函数的实现,在h文件中进行...
C++
类
的
定义
和
声明
一个
类
可以包含若干(public)公有的、私有的(private)和受保护的(protected)部分,公有的可被使用该
类
型的所有代码访问,私有的可以被其他
类
成员访问,所有成员必须在
类
的内部
声明
class Sales_i...
C++
定义
与
声明
引用
声明
使用关键字 extern,但不能够对其进行初始化,一旦初始化,就不叫
声明
(引用
声明
),而叫
定义
(
定义
声明
)。 ***注意 变量只能被
定义
一次(即所谓的“单
定义
规则”),但可在多处
声明
。 三、举例 int n...
C++ 语言
64,650
社区成员
250,478
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章