假設我有一個unique_ptr
成員對象,我想在類中初始化,請參閱下面的代碼。爲什麼我必須使用統一初始化(花括號)?第二個聲明吐出一個錯誤,像獨特的指針類初始化
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.
而且我不認爲是一個最令人頭疼的解析問題,至少我不相信如此。
#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;
}
NSDMIs必須使用* brace-equal-initializer *。 – 2014-10-09 02:37:24
@ T.C。謝謝,我不知道這是必須的。 – vsoftco 2014-10-09 02:40:16