将对象的指针传递给构造函数中的另一个类
Passing pointer of an object to another class in its constructor
这个问题有点相关,但仍然不能解决我的问题。考虑两个类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!
相关文章:
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 关于复制构造函数的一个棘手问题
- C++构造函数,一个用于度,一个用于弧度
- 关于QLIST类型实例复制构造函数的一个奇怪问题
- 需要使班级(long_number)用构造函数和一个打印功能代表1到60的任何长度
- 运算符 = 不匹配,构造函数创建一个指针
- 为什么我不能在 c++ 类中声明一个空构造函数,该构造函数从一个具有私有构造函数的构造函数扩展而来
- 如何使构造函数接受一个非常量对象
- 初始值设定项列表,可变参数模板和构造函数推导:一个奇怪的情况
- shared_ptr的原始指针构造函数是一个错误吗?
- 当这个构造函数接受一个初始值设定项列表并委托一个向量时,是什么导致它委托给自己
- C++11使variadic构造函数了解一个初始化列表的初始化列表
- 为什么这个initializer_list构造函数是一个可行的重载
- 为什么我的Arduino类构造函数需要一个参数
- 内联构造函数和一个定义规则
- 如何通过构造函数将一个类的实例传递给另一个类
- 如何用g++构造在另一个文件中定义的类
- 在另一个类中使用自定义构造函数声明一个类
- 如何从另一个构造函数调用一个c++类的构造函数
- 模板中的构造函数不同:一个用于字符串,另一个用于其他任何东西