【发布时间】:2014-03-23 05:05:51
【问题描述】:
我正在创建一个类,我想知道如何创建类似于std::map 或std::vector 样式的构造函数。
std::map<std::string, std::string> map = {
{"foo", "bar"},
{"biz", "buz"},
{"bez", "boz"}
};
不同之处在于我不希望我的班级像std::map 那样询问想要接受的类型。
std::map<std::string, std::string>
我希望我的班级接受这种风格的论点:
{
{"foo", "bar"},
{"biz", "buz"},
{"bez", "boz"}
};
但具有定义的类型。 (std::string, Typer)
“Typer”是我将作为值插入到 std::map 上的一个类。
【问题讨论】:
-
你不能推导出初始化列表。
-
简单的答案是:使用map作为第二个参数,如下: const std::map<:string std::string>& data。在这种情况下,您可以将您的语法用于第二个参数。顺便说一句,这不是一个重复的问题。你不需要在这里使用初始化列表。这适用于 VS2013 和 GCC 4.8.1。