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

问题描述 投票:1回答:1

所以,我现在处于这种情况。我有两个类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;
}
c++
1个回答
2
投票

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.