C ++:使用另一个类中的参数初始化对象数组

时间:2018-10-29 15:17:08

标签: c++ arrays constructor member-initialization

我正在尝试创建一个类,该类将具有另一个类的对象数组作为其成员。这个“较低”的类构造函数需要一个参数(没有默认的c-tor),我不确定如何做到这一点。

In .hpp
class ProcessingElement : public sc_core::sc_module
{
public:
    ProcessingElement( sc_core::sc_module_name name );
    sc_core::sc_module_name name;
};

In .cpp
ProcessingElement::ProcessingElement( sc_core::sc_module_name name ) : name(name) {
    //not relevant
}

和“上”类:

In .hpp
class QuadPE : public sc_core::sc_module
{
public:
    QuadPE( sc_core::sc_module_name name );
    ProcessingElement pe[4];
};

In .cpp
QuadPE::QuadPE( sc_core::sc_module_name name ) : pe[0]("PE0"), pe[1]("PE1"), pe[2]("PE2"), pe[3]("PE3") {
    //non relevant
}

这显然会产生错误,但是我不确定如何解决。如果可能的话,我想避免使用向量,因此我在SO上发现的一些包含向量的解决方案对我来说并不理想。

请注意,sc_core::sc_module_nameconst char*或类似的typedef,可惜现在无法查找。

谢谢。

1 个答案:

答案 0 :(得分:3)

aggregate initialize个数组:

QuadPE::QuadPE( sc_core::sc_module_name name ) : pe{"PE0", "PE1", "PE2", "PE3"} {}

尽管您可能不想使用std::vector,但我仍然建议您看看std::array。它也是一个聚合,用作c样式数组上的薄包装(零开销)。但是,它具有完整的语义,并且是功能齐全的标准库容器。因此,您可能会发现它不太笨拙。