我想声明一个数组作为Struct的成员之一。 它失败,编译器将引发以下错误:

error C2536: ... : cannot specify explicit initializer for arrays

这是我的.h文件中的结构:

struct CommandRepo
{
    std::string root_command[5] = { "create", "edit", "remove", "list", "setting" };
    std::string Base = "^(create|edit|remove|settings|list)(?: *)(?:--([a-zA-Z]*))";
    std::string EachWord = "(\\w+)";
};

似乎(如在SO某处所读),VSC2013不完全符合C ++ 11,并且该错误与缺乏合规性有关。 真的吗? 我应该如何解决?

#1楼 票数:0

可以使用std::vector吗? 如:

struct CommandRepo
{
    std::vector<std::string> root_command = { "create", "edit", "remove", "list", "setting" };
    std::string Base = "^(create|edit|remove|settings|list)(?: *)(?:--([a-zA-Z]*))";
    std::string EachWord = "(\\w+)";
};

此结构的接口肯定会更改,但这使您可以初始化std::string的列表。

  ask by Mostafa Talebi translate from so

未解决问题?本站智能推荐:

2回复

在使用auto时初始化struct会在VS2013中导致复制

在以下代码中,创建nested对象的行仅使用gcc打印“构造函数”,而不使用VS 2013打印: 输出: 所以我想这里发生的是一个临时对象被复制到n 。 没有编译器生成的move构造函数,所以这就是为什么它不是move的原因。 我想知道这是错误还是可接受的行为? 为什么添加默认构
1回复

VisualStudio2013CTP是否支持非整数类型的类内静态const初始化程序?

当使用g ++(和我上次检查的clang ++)时,我可以将其写在标题中并期望它能工作: 但是,Visual Studio 2013 CTP需要这样做(并且编译时不会出现警告或错误): 这是Visual Studio的不足还是我做错了什么?
1回复

将初始化列表与std::map一起使用

我问了一个早先的问题 ,这个问题在CString和Unicode问题上脱离了主题。 我现在已将我的示例缩减为namespace std和cout (而不是printf )。 但核心问题仍然存在。 这与提名为重复的问题有关,但是分开。 这个问题是关于地图中的地图,并且已经超过2年了,
1回复

在c++中使用初始化列表时的奇怪行为

我试图使用初始化列表初始化字符串向量。 但我得到一些奇怪的行为。 如果构造函数中有多个参数,则它可以工作,但如果这是唯一的参数,则会给出错误。 请参阅下面的代码以了解 我正在使用2013年的visual studio。请帮忙。
1回复

嵌套结构的值初始化无法正常工作

我有这个结构定义: 现在我想创建一个outer的值初始化实例,所以我写 使用 GCC,这工作得很好:所有的inner.i都归零,所有的inner.str都是空的。 但是在VS2013上,只有inner.str是空的; 所有inner.i都包含垃圾,即未正确初始化。 如果没有std::string成员
3回复

支撑初始化列表中的对象创建顺序

我有两个问题: 为什么在第一个支撑的初始列表对象中是按从右到左的顺序创建的? 为什么第二种情况下的括号会恢复此顺序? 编辑:我用msvs 2013编译了它
3回复

解决VC++12中的模板特化问题?

我有一些为Clang 3.2编写的代码,我试图移植到VC ++ 12中运行。 Clang 3.2+和GCC 4.8没有任何问题,但VC ++ 12抱怨。 这是产生问题的最小代码段: 现在我很确定这是一个编译器错误(但如果不是,请告诉我!)给出的错误是: 那么有谁知道一个体面的工作?
3回复

VisualStudio2013C++-将std::unique_ptr传递给绑定函数

使用Visual Studio 2013 RC和C ++,我试图将std::unique_ptr传递给已使用std::bind的函数。 但是,我遇到了麻烦,因为当我尝试这个时,VS似乎并不喜欢它。 这是我正在尝试编译的内容: 这在GCC 4.8.1中编译,但在VS2013 RC中不编译。