A.hpp:Как инициализировать std :: unique_ptr в конструкторе?
class A {
private:
std::unique_ptr<std::ifstream> file;
public:
A(std::string filename);
};
a.cpp:
A::A(std::string filename) {
this->file(new std::ifstream(filename.c_str()));
}
ошибка, что я брошена:
A.cpp:7:43: error: no match for call to ‘(std::unique_ptr<std::basic_ifstream<char> >) (std::ifstream*)’
Кто-нибудь есть какие-либо понять, почему это происходит ? Я пробовал много разных способов заставить это работать, но безрезультатно.
Альтернативно вызвать сброс() 'функцию' 'на File', чтобы назначить' unique_ptr', если вам нужно сделать некоторые проверки в конструкторе заранее. – gigaplex
Вам необязательно использовать список инициаторов-членов. Однако это предпочтительнее. – JohnJohn
@JohnJohn, если вы используете Pimpl, вам следует использовать список инициаторов-членов, так как ваш std :: unique_ptr является const. – csguth