如何为结构赋值如初始化

时间:2013-12-02 18:56:07

标签: c++ visual-c++ visual-studio-2012

假设我在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),分配仍无法正常工作

2 个答案:

答案 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带有命令行参数,程序不需要它。