initializer_list内存错误

时间:2015-12-07 07:56:48

标签: c++ c++11 initializer-list qnx

我尝试使用带有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)。

0 个答案:

没有答案