jam*_*o00 5 c++ constructor c++11
根据C++ 0x规范,以下是合法的
class A {
A(int i) : x(i) {}
A() : A(0) {}
int x;
};
Run Code Online (Sandbox Code Playgroud)
但它无法"A" is not a nonstatic data member or base class of class "A"在VC 2010中编译().任何人都知道什么是错的?
在撰写本文时,Visual C++ 2010(也称为VC++ 10.0)不支持委托构造函数,这是您的代码片段所需要的.VC++ 10.0仅部分支持C++ 0x,在撰写本文时,没有编译器实现了整个C++ 0x功能集(虽然这很快就会改变,特别是在C++ 0x标准最终确定之后).
Scott Meyers 总结了gcc和MSVC编译器中的C++ 0x支持.这是不同编译器中另一个C++ 0x功能支持列表.此外,Visual C++ 2010中支持的C++ 0x功能列表直接来自马的口.
现在,直接在构造函数的初始化列表中初始化所有成员:
class A
{
public:
A(int i) : x(i) {}
A() : x(0) {}
private:
int x;
};
Run Code Online (Sandbox Code Playgroud)