类作为参数给另一个类的成员函数使用注意点

class A的成员函数要使用class B对象、指针、引用,必须在class B 的定义之后,而不是声明之后。不像C语言中,

函数的声明在调用该函数的函数之前,而函数定义可以在该函数之后。如下例子:

#include <iostream>
#include <algorithm>


using namespace std;


class B;
class A
{
private:
int a;
public:
A(int x=0):a(x){}
int getB(B *b);
};


int A::getB(B *b) //这个成员函数的定义在class B定义之前,会报以下错误:

{ //use of undefined type 'B'
return b->getb(); //see declaration of 'B'  
} //left of '->getb' must point to class/struct/union


class B
{
private:
int b;
public:
B(int x=0):b(x){}
int getb()
{
return b;
}
};


int main(void)
{
A a(2);
B b(3);
cout<<a.getB(&b)<<endl;
return 0;
}


改正:将class A使用到class B的成员函数的定义放在class B的定义之后,则程序可以正常运行。

发现了问题,小小总结下,避免以后忽视了这个问题而浪费大量时间做无用功。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值