我现在正在进行这种设计:(注意IWorker是一个抽象类)

c++ - 当对象作为基本类型传递时,如何创建派生对象拷贝? C++-LMLPHP

如您所见,函数“addWorker”是纯虚拟的,并在较低层的Manager中实现。

我的问题在这里:

void Manager::addWorker(IWorker* worker) {
    this->_workers.push_back(worker);
    worker->setBoss(this);
}

1)编译器无法为 vector _workers创建IWorker对象。什么是
解决此问题的正确方法?我想和原型(prototype)一起去
设计并强制所有IWorker对象实现copy()方法并使用
它在那里。

2)将_boss保留为IWorker对象对IWorker有益还是应该尝试
指针接近IWorker *?

先感谢您。

最佳答案



不,那不能解决问题



是的,vector<IWorker>必须为vector<IWorker *>
请注意,在Manager::addWorker中,您已经假设您有一个指针 vector

附言

出于您的问题,为什么不使用实现和泛化来表示继承?



如果这是真的,则意味着经理是 worker ,您真的确定吗?通常,Manager是一个独立的类,它不继承其管理的类,并且可以是单例

您确定了解继承是什么吗?

10-06 12:00