假设我在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;
};