所以,我现在就处于这种情况。我有两个类 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;
}
关于c++ - 涉及全局对象的循环依赖 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59558029/