使用“时,为什么struct array init不起作用?”;新";在C++;? 我正在学习C++,我遇到了一个有趣的行为。

使用“时,为什么struct array init不起作用?”;新";在C++;? 我正在学习C++,我遇到了一个有趣的行为。,c++,arrays,pointers,struct,C++,Arrays,Pointers,Struct,假设我有一个结构点,intx和inty 我想使用“标记结构初始化”语法创建一个点数组。此方法有效,结果为3: Point p[3] { {1, 2}, {3, 4}, {5, 6} }; cout << p[1].x; 常规构造函数是这样工作的,但事实并非如此。我知道这不是一个构造函数,只是一种简化的语法,可以立即为字段赋值,但我很好奇为什么第一个解决方案有效,而第二个解决方案无效 谢谢你帮助我 这个很好用。你使用哪个版本的编译器?它工作得很好@chris谢谢你指出这一点。我显然误

假设我有一个结构点,
intx
inty

我想使用“标记结构初始化”语法创建一个点数组。此方法有效,结果为3:

Point p[3] { {1, 2}, {3, 4}, {5, 6} };
cout << p[1].x;
常规构造函数是这样工作的,但事实并非如此。我知道这不是一个构造函数,只是一种简化的语法,可以立即为字段赋值,但我很好奇为什么第一个解决方案有效,而第二个解决方案无效


谢谢你帮助我

这个很好用。你使用哪个版本的编译器?它工作得很好@chris谢谢你指出这一点。我显然误解了这个问题。我认为这与此有关,但我不知道为什么它在您的情况下不起作用。尝试添加一个点(int x,int y)构造函数。这很好。你使用哪个版本的编译器?它工作得很好@chris谢谢你指出这一点。我显然误解了这个问题。我认为这与此有关,但我不知道为什么它在你的情况下不起作用。尝试添加一个点(intx,inty)构造函数。
Point *p = new Point[3] { {1, 2}, {3, 4}, {5, 6} };
cout << p[1].x; // some random number from memory