【发布时间】:2013-12-19 19:20:36
【问题描述】:
我正在使用 C++,并且正在创建一个 ex_stage 类(一个 SystemC 模块,如果它有任何区别的话)。在该类的头文件中,我定义:
public:
ReorderBuffer ROB;
ReorderBuffer 是我定义的另一个类,它有自己的构造函数。我已将ROB 定义为ex_stage 类的全局变量,以便可以从ex_stage 中的多个函数访问它。
但是,直到运行时我才能初始化 ROB,因为它的某些功能取决于用户提供的值。因此,即使我将ROB 定义为全局变量,我也无法在定义的位置对其进行初始化。
通常,我会这样做:
ReorderBuffer ROB(<incoming variables>);
在ex_stage的构造函数内同时构造ROB。但是,由于我已经定义了ROB,我不确定我是否能够做到这一点而不会引起问题。
执行这样的操作实际上会影响ROB 在其原始范围内,还是会创建一个新的ROB,其范围是ex_stage 的构造函数的本地范围?
附: - 抱歉,如果这很难理解,如果您需要更多信息,请告诉我。
【问题讨论】:
-
您可以通过将对象声明为指针来延迟对象的初始化。考虑使用
unique_ptr<RorderBuffer>(来自#include <memory>)。
标签: c++ constructor scope