问题描述
最近,我想在我的代码中从原始指针转为智能指针(请注意,它过去在使用原始指针时没有任何问题)。
现在,我的复制构造函数有问题。
假设我想像这样创建一个新的 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 (将#修改为@)