0

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

4

2 回答 2

1

不需要动态分配:

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

可以通过附加一个临时缩短到:

container.append(Data(some parameters));

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

container.append({some parameters});

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

container.append(Data{some parameters});
于 2013-06-14T10:24:22.680 回答
0

我想你想要这个

container.append(Data(some_parameters));
于 2013-06-14T10:18:46.443 回答