Supponiamo di avere un oggetto membro unique_ptr
che desidero inizializzare in classe, vedere il codice seguente. Perché devo utilizzare l'inizializzazione uniforme (parentesi graffe)? La seconda dichiarazione sputa un errore, qualcosa comeInizializzazione univoco del puntatore nella classe
so.cpp:10:31: error: expected parameter declarator
std::unique_ptr<Foo> upf2(new Foo);
^
so.cpp:10:31: error: expected ')'
so.cpp:10:30: note: to match this '('
std::unique_ptr<Foo> upf2(new Foo); ^
2 errors generated.
E non credo sia un problema di parse più fastidioso, almeno io non lo credo.
#include <memory>
class Foo
{
};
class Bar{
std::unique_ptr<Foo> upf1{new Foo}; // works fine
// std::unique_ptr<Foo> upf2(new Foo); // error here
};
int main()
{
Bar bar;
}
Gli NSDMI devono utilizzare un inizializzatore * controvento o uguale *. –
@ T.C. grazie, non sapevo che fosse obbligatorio. – vsoftco