假设我在C ++ 11中有一个结构:

typedef struct
{
   int val1;
   int val2;
} Mystruct;


我可以这样初始化它,并且可以正常工作:

Mystruct a = {1,2};


但是我如何以相同的方式为它重新赋值:

Mystruct a = {1,2};
...................
a = {3,4};  //this line doesn't work


更新1:

这是我从Visual Studio复制出来的确切代码,也是我编写的唯一代码:

#include "stdafx.h"

struct Mystruct
{
   int val1;
   int val2;
};

int _tmain(int argc, _TCHAR* argv[])
{
Mystruct a = {1,2};
a = {3,4};  //this line doesn't work

return 0;
}


错误是:

错误C2059:语法错误:'{'c:\ workspace \ trycplus \ trycplus \ trycplus.cpp

错误C2143:语法错误:缺少';'在'{'c:\ workspace \ trycplus \ trycplus \ trycplus.cpp之前

错误C2143:语法错误:缺少';'在'}'之前c:\ workspace \ trycplus \ trycplus \ trycplus.cpp

更新1:

我将Visual Studio 2012更新为2012年11月CTP,并将Platform Toolset更改为


Microsoft Visual C ++编译器2012年11月CTP(v120_CTP_Nov2012),该分配仍然无法正常工作

最佳答案

从初始化列表进行分配在C ++ 11中可以正常工作:

a = {3,4};


请参见live demo here

顺便说一句,您不需要cumbersone typedef语法,并且需要struct而不是strut

struct Mystruct
{
   int val1;
   int val2;
};

09-26 14:41