问题代码如下: #include <iostream> using namespace std; #include<string> class A { public: A(string str ) { name = str; } void showName() { cout << name <<endl; } void refer_B(B* b) // 编译错误1 { b->showName();//编译错误2 } private: string name; }; class B { public : void refer_A(A *a) { a->showName(); } B(string str): name(str) { } void showName() { cout << name <<endl; } private : string name; }; int main() { B b("I am B"); A a("I am A"); a.refer_B(&b); b.refer_A(&a); return 0; } 解决方案: #include <iostream> using namespace std; #include<string> class B;//解决编译错误1 class A { public: A(string str ) { name = str; } void showName() { cout << name <<endl; } private: string name; }; class B { public : void refer_A(A *a) { a->showName(); } B(string str): name(str) { } void showName() { cout << name <<endl; } private : string name; }; void A:: refer_B(B* b) { // 解决编译错误2 (改代码一定要在 B类之后定义,这样就能找到 b->showName()函数) b->showName(); } int main() { B b("I am B"); A a("I am A"); a.refer_B(&b); b.refer_A(&a); return 0; } |
|