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

来源:互联网 发布:mac book air常用软件 编辑:程序博客网 时间:2024/06/07 03:40

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的定义之后,则程序可以正常运行。

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

原创粉丝点击