не имеет большой опыт работы с unique_ptrs еще, и у меня трудное время определить, почему я получаю сообщение об ошибке:возвращение члена unique_ptr от метода
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. Если я просто создаю новый unique_ptr из IFCC, я не думаю, что ему нужен параметр, который IFCC требует, чтобы создать новый объект, так как я использую существующий объект для его создания.
Это, вероятно, некоторая синтаксическая ошибка, которую я где-то пропустил. Кажется, что возвращение значения не должно вызывать проблем.
Я смотрел unique_ptr info, и похоже, что у меня есть то, что у них есть, но мое приложение сложнее. Итак, есть ли у вас какие-либо данные об ошибке?
Я также видел stack overflow unique_ptr link и думаю, что это другой вопрос, потому что они спрашивают, как он реализован для компилятора и почему, тогда как мой вопрос касается того, как реализовать unique_ptr для возвращаемого значения. В их вопросе показан один оператор return, но я пытаюсь использовать make_unique, тогда как они создали новый unique_ptr и использовали эту переменную в качестве возвращаемого значения.
Ваш конструктор является конструктором копирования, он ожидает ссылки на IFCC, я могу видеть его из генерируемого сообщения об ошибке. Он не принимает unique_ptr Я показал вам решение –
CashCow