VC2010中的C ++ 0x Peer构造函数

时间:2010-10-03 02:24:31

标签: c++ constructor c++11

根据C++0x spec,以下是合法的

class A {
    A(int i) : x(i) {}
    A() : A(0) {}
    int x;
};

但它无法在VC 2010中编译("A" is not a nonstatic data member or base class of class "A")。任何人都知道什么是错的?

3 个答案:

答案 0 :(得分:8)

在撰写本文时,

Visual C ++ 2010(也称为VC ++ 10.0)不支持委托构造函数,这是您的代码片段所需要的。 VC ++ 10.0仅部分支持C ++ 0x,在撰写本文时,没有编译器实现了整个C ++ 0x功能集(虽然这很快就会改变,特别是在C ++ 0x标准最终确定之后)。

Scott Meyers有a summary of C++0x support in gcc and MSVC compilers。这是C++0x feature support in different compilers的另一个列表。另外,a list of C++0x features supported in Visual C++ 2010 straight from the horse's mouth

现在,直接在构造函数的初始化列表中初始化所有成员:

class A
{ 
public:
    A(int i) : x(i) {} 
    A() : x(0) {} 
private:
    int x; 
};

答案 1 :(得分:0)

Visual Studio尚不支持所有0x。 (并且没有人应该这样做; 0x没有最终确定。)

This describes what 0x features are implemented in VS 2010.

答案 2 :(得分:0)

MSVC ++ 2010不支持delegating constructor

This page列出了C + 0x功能及其在热门编译器中的支持。