例如,QList。现在,我尝试使用这种方式:

Struct Data
{
...
}


...

Data * data_ptr = 0;

QList<Data> container;
while(some condition)
{
   if(some condition)
   {
       data_ptr = new Data(some parameters);
       container.append(*data_ptr);
       delete data_ptr;
   }
...
}


我需要使用命名指针在容器中创建一些数据,但是也许有一种更简单的方法来创建此数据,而不是在RAM中,而是在堆栈中?甚至不需要名字?
抱歉,在++语言手册中找不到此信息。

最佳答案

无需动态分配:

Data data(some parameters);
container.append(data);


可以通过以下方式将其缩短:

container.append(Data(some parameters));


在C ++ 11或更高版本中,您可以使用花括号初始化来创建临时文件。如果它是没有构造函数的纯聚合,这也将起作用:

container.append({some parameters});


尽管我发现某些较旧的编译器无法推断出必要的类型转换,但需要帮助:

container.append(Data{some parameters});

关于c++ - 如何将Noname堆栈数据添加到Qt容器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17106227/

10-11 22:28
查看更多