【发布时间】:2013-12-18 14:23:05
【问题描述】:
假设我在 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 更新为 Nov 2012 CTP,并将平台工具集更改为 :
Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012),赋值仍然不起作用
【问题讨论】:
-
Works for me,一旦我修正了错字并将片段组装成可编译的东西。究竟出了什么问题?你确定你(a)在必要时启用 C++11 支持,并且(b)在函数内部进行赋值吗?您能否发布一个演示问题的最小完整示例?
-
如果您正在使用 C++,为什么要使用
typedef struct? -
这是为了 c 和 C++ 之间的兼容性。在这种情况下,有或没有没有任何区别。
-
统一初始化在 VS2012 RTM 中尚不可用。第一个支持它的版本是 2012 年 11 月的 CTP(不要使用它)和 VS2013 RTM。
标签: c++ visual-c++ visual-studio-2012