【发布时间】:2016-12-06 21:59:52
【问题描述】:
我正在尝试实现以下目标,类管理器的单个对象正在尝试创建许多类工作者对象。 manager 对象将它自己作为对 worker 对象的引用传递,以便 worker 对象可以根据 manager 对象的状态改变它们的行为。
class manager;
class worker{
public:
worker(manager &boss);
};
class manager{
public:
unsigned int currentMethod = 5;
manager(int numofWorkers);
};
我尝试实现这一点的方式是,当调用 manager 的构造函数时,我创建一个工人向量并尝试 push_back(this) aka manager 对象。
manager::manager(int numOfWorkers){
std::vector<worker> manyWorkers;
for(int i = 0; i < numOfWorkers;i++){
manyWorkers.push_back(this);
}
}
worker::worker(manager &boss){
std::cout << "Current method is " << boss.currentMethod << std::endl;
}
这段代码的调用方式是
int main(int argc, char *argv[]){
manager manag;
return 0;
}
事实证明,push_back(this) 并没有将“this”传递给类的构造函数,尽管 push_back() 调用了构造函数。我也试过 manyWorkers(this).push_back 也不起作用。
使用 push_back() 实例化对象时,如何将指针传递给 manyWorkers 对象的构造函数?
我不知道该怎么称呼我想要实现的目标,并且无法找到解决方案。
【问题讨论】:
-
如果您希望您的容器管理多态引用,您需要重新定义您的容器,以便它管理指针,或者更好的是,共享指向基类的指针。
标签: c++ constructor