如何将非名称堆栈数据添加到Qt容器?

时间:2013-06-14 10:17:25

标签: c++ qt

例如,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中,而是在堆栈中?也许甚至不需要一个名字? 对不起,我在С++语言手册中找不到这些信息。

2 个答案:

答案 0 :(得分:1)

无需动态分配:

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

可以通过附加临时来缩短:

container.append(Data(some parameters));

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

container.append({some parameters});

虽然我发现一些较旧的编译器无法推断出必要的类型转换并且需要帮助:

container.append(Data{some parameters});

答案 1 :(得分:0)

我想你想要这个

container.append(Data(some_parameters));