问题描述
- C++中类A和类B如何相互调用
-
类A中有函数FunA1()调用类B中函数FunB1();而类B中的函数FunB2()又调用了类A中函数FunA1();
如何才能实现这样的功能???谢谢!
在A.h和A.cc文件中实现先声明B,然后用B的指针:
class B //B的声明
class A()
{
public:
FunA1();
{
b->FunB1();
}
private:
B *b;
}
在B.h和B.cc文件想调用A中函数:
class B()
{
public:
FunB1();
{
}
FunB2();
{
//想在这块儿调用A的函数FunA1(),如何才能实现?
}
~~
~~
private:
~~~~~~
}
解决方案
这样写应该可以,你试试。
class A
{
public:
void FunA1(){}
void FuncA2(){}
void FunA3(){b->funb1();}
private:
class B *b;
};
class B()
{
public:
void funb1(){}
void funb2(){
a->FunAa();
}
private:
class A a;
};
解决方案二:
以前做过测试,这种相互交叉使用,定义指针是可以的,定义对象不行。
例如:类A在B前定义
class B;
class A
{ public:
B *pb;//合法
B b;// 非法
}
class B
{
public:
A a;//合法
A *pa; //合法
};
解决方案三:
class B; //先申明
class A
{
public: void fa(bool x=false) {
B b;
if (!x) b.fb();
}
};
class B
{
public: void fb() {
A a;
a.fa(true);
}
};
int main()
{
A a;
a.fa();
}
解决方案四:
在B类中声明A,调用方法a();
在A类中声明B,调用方法b();
解决方案五:
如果只有前置声明的话,那么就不能用对象的细节
解决方案六:
先声明,就是声明函数一样:在函数的实现前,使用函数头声明这个函数在后续定义。
类,也是一样的。先声明,可以防止编译出错。
时间: 2024-11-05 19:25:20