我在std::map
课程中有一个Driver
,就像这样
std::map<int, dtp::driver_core::worker_record::WorkerRec> workers;
类WorkerRec
是一个单独的类,并具有以下构造函数。
WorkerRec::WorkerRec(const std::shared_ptr<TaskCore> task,
const std::string & hostname,
const std::string & pid):
worker_task(task),
worker_hostname(hostname),
worker_pid(pid)
{
}
我在班级Driver
int DriverCore::register_worker(const std::string & hostname, const std::string & pid)
{
.......................................................
.......................................................
WorkerRec w(task, hostname, pid);
workers[key] = w;
.......................................................
.......................................................
}
将本地创建的对象放入std :: map(workers[key] = w
)或std :: map复制对象并且没有问题是正确的吗?
答案 0 :(得分:0)
编写的代码没有问题。地图将创建w的副本。
如果您想自己验证这一点,可以将工作图从类中传递到其他范围,调用WorkerRec析构函数,并验证地图内容是否仍然有效。
如果你有地图存储指针指向本地拥有的数据,那么你只会遇到问题。