是否必须让默认构造函数在c ++中使用统一初始化

时间:2014-03-29 19:55:36

标签: c++ uniform-initialization

  1. 在下面的代码中,我收到一条错误消息“没有 默认构造函数“。这就是为什么我不能使用制服 初始化

  2. 当我创建一个默认构造函数时,我收到了关于大括号的错误。

  3. 请突出显示有关此程序和统一初始化程序的问题。

    我正在使用VS 2012和C ++

    class Circle {
    
        double radius;
      public:
    
        Circle(double r) { radius = r; }
        double circum() {return 2*radius*3.14159265;}
        Circle () {
        cout<<"ALI \n ";
        }
    };
    
    int main () {
    
      Circle baz {30.0};   // uniform init.
    
      Circle qux{};
      cout << "foo's circumference: " << baz.circum() << '\n';
      cout<<endl;
      return 0;
    }
    

2 个答案:

答案 0 :(得分:4)

  • Visual Studio 2012不支持统一初始化语法。
  • Visual Studio 2013支持此代码。你可以在这里看到:Visual Studio 2013 Build

答案 1 :(得分:1)

Visual C ++ 2012的发布版本不支持此功能。

预览(CTP)确实对初始化程序列表有部分支持:http://www.microsoft.com/en-us/download/details.aspx?id=35515。但是这个特殊的代码甚至在该预览中也不起作用,因为STL还没有更新为使用初始化列表。 这将是可行的Visual Studio 2013。 我希望它可以提供帮助。