将对象的指针传递给构造函数中的另一个类

Passing pointer of an object to another class in its constructor

本文关键字:构造函数 另一个 对象 指针      更新时间:2023-10-16

这个问题有点相关,但仍然不能解决我的问题。考虑两个类A和B:

class A{
public:
    A(int id, B* coordinator);
    virtual ~A();
    B *coordinator;
}
class B{
public:
    B(int id, int param2);
    virtual ~B();
    run();
}
void b::run(){
    while(true){
      A(1, this);
      A(2, this);
      //something else create which may create more A
    }
}
int main(int argc, char* argv[]) {
    B bObj(atoi(argv[1]), atoi(argv[2]));
}

在main函数中,我创建了一个类B类型的对象bObj。B的构造函数调用run(), B的run()进入无限循环。它创建了A的多个对象。现在我想传递一个bObj的指针给a类新创建的对象,这样他们就可以访问bObj的其他公共变量和函数。所以我传递这个指针,同时从B创建A的对象。我已经在类A中声明了一个类变量协调器 B*类型。但是我得到了这个:编译器错误-> ISO c++禁止声明' B '没有类型

请帮我一下。我对c++还是个新手。

是否尝试了B类的前向声明?这至少可以部分解决你的问题。

在当前代码中,编译器在构造函数中看到实体B,但不知道它是类型,因为它还没有遇到这样的类型声明。

要解决您的问题,您应该简单地转发声明B。记住每个类定义

末尾的;分号
class B;                        //forward declaration
class A{
public:
    A(int id, B* coordinator);
    virtual ~A();
    B *coordinator;
};                              //remember the semi-colon!