Visual C ++奇怪的错误

时间:2011-09-07 18:19:42

标签: visual-studio visual-studio-2010

我将我用g ++做的项目复制到v​​isual 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; }

3 个答案:

答案 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是一个函数。如果是这样,那么初始化程序就可以了。