如果我有两个名为A和B的课程,
注意:以下内容无法编译。
class A
{
public:
static void funcA() {}
void call_funcB() { B::funcB(); } // call class B's function
};
class B
{
public:
static void funcB() {}
void call_funcA() { A::funcA(); } // call class A's function
};
错误:
error C2653: 'B' : is not a class or namespace name
error C3861: 'funcB': identifier not found
你能调用每个类的静态函数吗?
答案 0 :(得分:5)
你必须这样做:
class A
{
public:
static void funcA() {}
void call_funcB() ;
};
class B
{
public:
static void funcB() {}
void call_funcA() { A::funcA(); } // call class A's function
};
void A::call_funcB() { B::funcB(); } // call class B's function
这允许A::call_funcB()
查看B
声明。
答案 1 :(得分:0)
你需要给编译器一个提示,要求定义另一个类,因为它是循环依赖。
class B;
class A { ... };
class A; // assuming separate file
class B { ... };
答案 2 :(得分:0)
你可以制作funcA和funcB Friend方法。