假设我在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,并将平台工具集更改为 :
Microsoft Visual C ++编译器2012年11月CTP(v120_CTP_Nov2012),分配仍无法正常工作
答案 0 :(得分:3)
从初始化列表中分配在C ++ 11中工作正常:
a = {3,4};
请参阅live demo here。
顺便说一句,您不需要使用cumbersone typedef
语法,而是需要struct
而不是strut
:
struct Mystruct
{
int val1;
int val2;
};
答案 1 :(得分:0)
如果您正在使用C ++ 11,那么您不应该需要#include "stdafx.h"
或int t_main(int argc, _TCHAR* argv[])
。 t_main带有命令行参数,程序不需要它。