A.hpp:Come inizializzare std :: unique_ptr nel costruttore?
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()));
}
L'errore che ottengo è gettato:
A.cpp:7:43: error: no match for call to ‘(std::unique_ptr<std::basic_ifstream<char> >) (std::ifstream*)’
Qualcuno ha qualche intuizione sul motivo per cui questo è che si verificano ? Ho provato molti modi diversi per farlo funzionare, ma inutilmente.
chiamano alternativa, il() '' funzione di ripristinare il 'file' per assegnare il' unique_ptr' se avete bisogno di fare qualche controllo nel costruttore in anticipo. – gigaplex
Non è necessario utilizzare necessariamente l'elenco di inizializzazione dei membri. È più preferibile però. – JohnJohn
@JohnJohn, se stai usando Pimpl, dovresti usare l'elenco di inizializzatore dei membri, dato che std :: unique_ptr è const. – csguth