C++:使用另一个 class 中的参数初始化对象数组
C++: Initialize array of objects with parameters within another class
我正在尝试创建一个 class,它将另一个 class 的对象数组作为其成员。这个 "lower" class 构造函数需要一个参数(没有默认的 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
}
和"upper" class:
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_name
是 const char*
或类似内容的类型定义,遗憾的是现在无法查找。
谢谢。
只是 aggregate initialize 数组:
QuadPE::QuadPE( sc_core::sc_module_name name ) : pe{"PE0", "PE1", "PE2", "PE3"} {}
虽然你可能不想使用std::vector
,但我还是建议你给std::array
看看。它也是一个聚合,用作 c 样式数组的薄(零开销)包装器。然而,它具有完整的值语义并且是一个全功能的标准库容器。所以您可能会发现使用起来不那么笨重。
我正在尝试创建一个 class,它将另一个 class 的对象数组作为其成员。这个 "lower" class 构造函数需要一个参数(没有默认的 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
}
和"upper" class:
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_name
是 const char*
或类似内容的类型定义,遗憾的是现在无法查找。
谢谢。
只是 aggregate initialize 数组:
QuadPE::QuadPE( sc_core::sc_module_name name ) : pe{"PE0", "PE1", "PE2", "PE3"} {}
虽然你可能不想使用std::vector
,但我还是建议你给std::array
看看。它也是一个聚合,用作 c 样式数组的薄(零开销)包装器。然而,它具有完整的值语义并且是一个全功能的标准库容器。所以您可能会发现使用起来不那么笨重。