所以,我现在处于这种情况。我有两个类A和B。B是A的子类,并且还有B类的全局对象,该对象在main中初始化。 A类的函数使用该全局对象并调用其函数。我必须以什么顺序编写声明才能使编译器读取所有内容?
无论尝试如何,我都会遇到相同的错误。即:-(x)未命名类型-无效使用不完整类型(x)-(x)的前向声明
代码示例:
class B;
B* B_GLOBAL;
class A{
public:
void A_function(){
B_GLOBAL->B_function();
}
private:
};
class B : public A{
public:
void B_function();
private:
};
int main(void){
B_GLOBAL = new B;
return 0;
}
将A_function
的定义移到B
的声明下面:
class B;
B* B_GLOBAL;
class A{
public:
void A_function();
private:
};
class B : public A{
public:
void B_function();
private:
};
void A::A_function(){
B_GLOBAL->B_function();
}
int main(void){
B_GLOBAL = new B;
return 0;
}