C++两个不同类成员之间的调用

通常情况下,会遇到两个不同类之间的成员之间的相互调用,即两个类中相互包含另一个类的对象,如果是简单的包含另一个类的头文件,就会造成两个类不断的创造另一个类的对象,造成一个死循环。所以应该慎重使用该方法。可以在调用过程中将另一个类的对象通过参数传递的方式传给另一个类中的成员函数。
以下的方法是错误的:
#include "b.h"
class {
int a;
B b;
};
#include "a.h"
class {
int b;
A a;
};
下面是正确的方法:只有其中一个包含另一个的头文件,另一个在.cpp文件中包含,在头文件开始时用class声明以下另一个类。另外在类中最好声明一个对象的指针类型,而不是直接创建对象。
 
/*a.h*/
#include <iostream>
using namespace std;  
class b; 
class a 
{ 
public: 
    b *ib; 
    void putA() 
    { 
        cout<<"This is A Class"<<endl; 
    } 
 
};
/*b.h/
<pre name="code" class="cpp">#include "a.h" 
using namespace std; 
class b 
{ 
public: 
    a* ia; 
    void putB() 
    { 
        cout<<"This is B Class"<<endl; 
    } 
 
}; 
<pre name="code" class="cpp">#include <stdio.h> 
#include <tchar.h> 
using namespace std; 
#include "b.h" 
int main() 
{    
	b B; 
    B.putB(); 
    B.ia->putA(); 
    getchar(); 
    return 0; 
} 


 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值