我尝试使用带有initializer_list的构造函数初始化我的类的对象。
代码如下:
QueryBuilder::QueryBuilder(std::initializer_list<std::string> list)
{
std::cout << "QueryBuilder constructor begin" << std::endl;
std::cout << "List size: " << list.size() << std::endl;
for(const auto& element : list)
{
std::cout << "List element: " << element << std::endl;
query_.tokens_.emplace_back(new NameEqualToken(element));
}
std::cout << "QueryBuilder constructor end" << std::endl;
}
以下列方式调用构造函数:
QueryBuilder{"Path"}
不幸的是,在执行这部分时,我总是遇到内存故障。
Console output:
QueryBuilder constructor begin
List size: 2857706971
List element: Path
然后一些随机字符(程序试图读取不存在的第二个元素)由内存故障确定。
看起来传递给构造函数的initializer_list的大小无效。
PS我也尝试使用const char *作为初始化列表模板参数类型。
谁能告诉我我做错了什么?
我使用的是gcc 4.7.3(crosscompiler armv7)。