【发布时间】:2015-10-05 03:41:35
【问题描述】:
我有一种情况,我需要创建具有许多对象指针参数的类的实例。但是,我正在寻找一种更简单的方法。在这个代码示例中,我非常笼统地展示了我正在尝试做的事情。
#include <vector>
#include <string>
class A
{
public:
A(std::string param);
};
class B
{
public:
B(std::vector<A*> params);
};
int main(int argc, char* argv[])
{
std::vector<A*> my_arguments;
my_arguments.push_back(new A("A1"));
my_arguments.push_back(new A("A2"));
my_arguments.push_back(new A("A3"));
my_arguments.push_back(new A("A4"));
B my_b = new B(my_arguments);
}
我不喜欢使用额外的 5 行来为此调用创建参数。有没有另一种方法可以做到这一点,需要更少的代码。我尝试使用这样的数组,但它似乎不起作用:
B my_b = new B([new A("A1"), new A("A2"), new A("A3"), new A("A4")]);
我怎样才能获得类似的结果?我考虑过使用va_list,但这需要另一个参数来标记结束,或者变量的数量。这可能是我最终会做的事情,但是,还有其他策略吗?
【问题讨论】:
-
尼特:不要使用
new,使用std::make_unique/std::unique_ptr<>。 -
@MichaelAlbers,并不是真正的重复,因为您引用的那个使用的是 POD
int,而这是一个vector的指针。不确定您是否可以从该问题的任何答案中获得该问题的答案,尤其是对于那些年长的人。
标签: c++ stl initialization