c++ - 涉及全局对象的循环依赖 C++

标签 c++

所以,我现在就处于这种情况。我有两个类 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/

相关文章:

c++ - 混合全局函数和类成员函数 C++

C++ 数组访问优化

c++ - 忙等待自旋锁所花费的 CPU 周期

c++ - boost::sregex_iterator 编译错误

c++ - 使用默认构造函数初始化对象

c++ - 对以副作用为目的的函数进行单元测试

c++ - 重载具有相同参数和不同返回类型的虚函数

c++ - 如果在 std::map 中操作不存在的键值对会发生什么?

c++ - 导出类时编译器错误

c++ - 未定义的引用类?