【发布时间】:2014-12-03 20:24:16
【问题描述】:
假设我有一个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;
}
【问题讨论】:
-
NSDMI 必须使用 brace-or-equal-initializer。
-
@T.C.谢谢,我不知道这是必须的。
标签: c++ c++11 unique-ptr in-class-initialization