我现在正在进行这种设计:(注意IWorker是一个抽象类)
如您所见,函数“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是一个独立的类,它不继承其管理的类,并且可以是单例
您确定了解继承是什么吗?