gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:17:00 24 4
gpt4 key购买 nike

我现在有这样的设计:(注意 IWorker 是一个抽象类)

UML diagram

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

我的问题是:

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

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

2) IWorker 将 _boss 保存为 IWorker 对象是否有好处,还是我应该尝试 指针接近 IWorker* ?

提前致谢。

最佳答案

force all IWorker objects to implement copy() method and use it there.

不,那不能解决问题

I try pointers approach as IWorker*

是的,vector<IWorker>必须是 vector<IWorker *>

请注意,在 Manager::addWorker 中你已经假设你有一个指针 vector

附言

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

function "addWorker" is pure virtual and implemented in the lower class Manager

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

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

关于c++ - 当对象作为基本类型传递时如何创建派生对象拷贝? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54160378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com