当 shared_ptr 作为参数传递时,复制构造函数不起作用

问题描述

最近,我想在我的代码中从原始指针转为智能指针(请注意,它过去在使用原始指针时没有任何问题)。

现在,我的复制构造函数有问题。

假设我想像这样创建一个新的 Frame shared_ptr(f1 是一个 std::shared_ptr<Frame> 对象):

std::shared_ptr<Frame> global_frame_1 = std::make_shared<Frame>(f1->duplicateFrame());

Frame 对象的拷贝构造函数定义如下:

Frame::Frame(const Frame& frame) {
    m_joints = frame.m_joints;
}

然后在我提供的第一行代码所在的文件中出现以下错误:
C2664 'Frame::Frame(const Frame &)' : cannot convert parameter 1 from '_Ty' to 'const std::shared_ptr<Frame>' 请注意,由于编译器没有将我指向代码中的特定行(而是 xmemory 文件中的一行),因此我只能在查看文件中的指定行后进行猜测,这种分配是我面临的问题。

我首先想到我需要一个带 std::shared_ptr<Frame> 的复制构造函数,所以我实现了一个:

Frame::Frame(const std::shared_ptr<Frame> frame) {
    m_joints = frame->m_joints;
}

但现在它在 Frame 文件中给了我同样的错误。

我似乎并不完全理解构造函数复制的工作原理,或者 shared_ptr 的工作原理(可能两者都有)。有人可以给我一个提示,告诉我出了什么问题,我该如何解决这个问题?

干杯!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)