成员的unique_ptr我没有很多与unique_ptrs经验,但和我有一个艰难的时间确定为什么我收到此错误信息:返回从方法
error C2664: 'IFCC::IFCC(const IFCC &)' : cannot convert argument 1 from 'std::unique_ptr>' to 'IFO *' \Microsoft Visual Studio 12.0\VC\include\memory
这是代码,我认为是导致此编译错误:
IFP.cpp:
std::unique_ptr<IFCC> IFPage::getIFCC()
{
return(make_unique<IFCC>(m_IFCC)); //recent add that is probably causing issue
}
IFP.h:
public:
std::unique_ptr<IFCC> getIFCC();
private:
unique_ptr<IFCC> m_IFCC = nullptr;
由于某些原因,错误提到了IFO,它是IFP的等级父母。另外,IFCC有IFCCB的母公司,IFCC和IFCCB都有IFO的参数。如果我只是创建一个新的IFCC unique_ptr,我不认为它需要IFCC创建新对象所需的参数,因为我正在使用现有的对象来创建它。
这可能是一些语法错误,我错过了某个地方。似乎没有返回值会导致问题。
我一直在看unique_ptr info,它看起来像我有他们有什么,但我的应用程序更复杂。那么你对错误有什么意见吗?
我也见过stack overflow unique_ptr link,认为它是一个不同的问题,因为他们问如何为编译器实现它,为什么,而我的问题是关于如何实现unique_ptr的返回值。在他们的问题中,显示了一个return语句,但我试图使用make_unique,而他们创建了一个新的unique_ptr并将该变量用作返回值。
您的构造函数是一个复制构造函数,它期望对IFCC的引用,我可以从生成的错误消息中看到它。它不需要一个unique_ptr 我告诉你解决方案 –
CashCow