/*
4. Write two classes, each of which has a member function
that takes a pointer to an object of the other class. Create
instances of both objects in main( ) and call the
aforementioned member function in each class.
*/
#include<iostream>
using namespace std;
//如果要让一个类里面的成员函数的参数是另一个类,那么必须要先申明另外一个类
//这样的声明让编译器先看到需要用到的类,以便完成非完全类型检验。
class B;
class A {
public:
//获取B类型对象,并返回那个B类型对象的地址
B* addrB(B*);
};
class B {
public:
//获取A类型对象,并返回那个A类型对象的地址
A* addrA(A*);
};
B* A::addrB(B* b) {
return b;
}
A* B::addrA(A* a) {
return a;
}
int main() {
B b;
A a;
cout << "B class b object's address: "
<< &b << endl;
cout << "A class a object's member function's result: "
<< a.addrB (&b) << endl;
cout << "A class a object's address: "
<< &a << endl;
cout << "B class b object's member function's result: "
<< b.addrA (&a) << endl;
}
4. Write two classes, each of which has a member function
that takes a pointer to an object of the other class. Create
instances of both objects in main( ) and call the
aforementioned member function in each class.
*/
#include<iostream>
using namespace std;
//如果要让一个类里面的成员函数的参数是另一个类,那么必须要先申明另外一个类
//这样的声明让编译器先看到需要用到的类,以便完成非完全类型检验。
class B;
class A {
public:
//获取B类型对象,并返回那个B类型对象的地址
B* addrB(B*);
};
class B {
public:
//获取A类型对象,并返回那个A类型对象的地址
A* addrA(A*);
};
B* A::addrB(B* b) {
return b;
}
A* B::addrA(A* a) {
return a;
}
int main() {
B b;
A a;
cout << "B class b object's address: "
<< &b << endl;
cout << "A class a object's member function's result: "
<< a.addrB (&b) << endl;
cout << "A class a object's address: "
<< &a << endl;
cout << "B class b object's member function's result: "
<< b.addrA (&a) << endl;
}