0
  1. 在下面给出的代码中,我收到一条错误消息“没有默认构造函数”。这就是我不能使用统一初始化程序的原因。

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

请强调有关此程序和统一初始化程序的问题。

我正在使用 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;
}
4

2 回答 2

4
  • Visual Studio 2012 不支持统一初始化语法。
  • Visual Studio 2013 支持此代码。你可以在这里看到:Visual Studio 2013 Build
于 2014-03-29T20:00:15.797 回答
1

这在 Visual C++ 2012 的已发布版本中不受支持。

这里有一个预览版 (CTP),它对初始化列表有部分支持:http: //www.microsoft.com/en-us/download/details.aspx?id=35515。但即使在该预览版中,此特定代码也不起作用,因为 STL 尚未更新为使用初始值设定项列表。这在 Visual Studio 2013 中可以正常工作。我希望它会有所帮助。

于 2014-03-29T21:02:03.017 回答