我将我用g ++做的项目复制到visual studio中,它抛出了很多错误,大多数错误都集中在使用{ a, b, c }
语法来初始化结构。
它现在遇到的问题是它无法理解:
struct WallPoint
{
int x, y;
};
WallPoint p = { 0, 1 }; // error C2059: syntax error : '{'
或
WallPoint p2[] = { { 0, 1 }, { 1, 2 } }; // error C2334: unexpected token(s) preceding '{'; skipping apparent function body
我可以使用任何编译器开关来理解它吗?
编辑:无效的整个文件:
struct WallPoint
{
int x, y;
};
void x()
{
WallPoint p;
p = (WallPoint) { 0, 1 };
}
class
{
WallPoint p[] =
{
{ 0, 1 },
{ 1, 2 }
};
};
int main() { return 0; }
答案 0 :(得分:3)
你需要激活mental switch“分类后的分号”:
struct Wallpoint { int x, y; } ;
^^^
更新,回答您新的完全不同的问题:
聚合初始化只能用于初始化命名变量:
WallPoint p = { 0, 1 }; // OK
它不可用于作业或临时演出:
p = { 0, 1 }; // No!
p = (WallPoint) { 0, 1 } // Nooo!
p = WallPoint{0, 1}; // New in C++11
答案 1 :(得分:2)
您在结构声明的末尾错过了;
。
答案 2 :(得分:0)
您正在使用作业而不是初始化程序。它应该是:
WallPoint p = { 0, 1 };
我认为在第二个例子中class
是一个函数。如果是这样,那么初始化程序就可以了。