繁体   English   中英

如何将变量初始化为以前分配的内存?

[英]How To Initialize a Variable to Previously Allocated Memory?

我正在使用C ++,并正在创建一个ex_stage类(如果有任何区别,请使用SystemC模块)。 在该类的头文件中,我定义:

public:
    ReorderBuffer ROB;

我还定义了ReorderBuffer是另一个类,它具有自己的构造函数。 我已经将ROB定义为ex_stage类的全局变量,以便可以从ex_stage多个函数访问它。

但是,我无法在运行时之前初始化ROB ,因为它的某些功能取决于用户提供的值。 因此,即使我将ROB定义为全局变量,也无法在定义的位置对其进行初始化。

通常,我会这样做:

ReorderBuffer ROB(<incoming variables>);

ex_stage的构造函数中以同时构造ROB 但是,由于我已经定义了ROB ,因此我不确定是否能够做到这一点而不会引起问题。

执行这样的操作是否会实际上影响其原始范围内的ROB ,还是会创建一个范围为ex_stage的构造函数本地的新ROB

PS-很抱歉,如果这很难理解,请告诉我是否需要更多信息。

当您要初始化全局变量时,必须注意“ 全局初始化失败 ”。 如果您是我,我将使用未命名的名称空间来隐藏全局var指针,并具有一些全局函数(仅在命名名称空间内),例如InitMyGlobalVar()GetMyGlobalVar()来初始化和检索指针。

如果您知道如何在运行ex_stage构造函数时初始化ROB ,则可能会发现成员初始化程序很有用。

成员初始化程序允许类成员以特定的方式进行初始化,而不是仅将其默认构造函数称为:

class ex_stage {
 public:
  ex_stage() : ROB(<stuff>) {}  // constructor that takes <stuff> will be called

  ReorderBuffer ROB;            // default constructor will _not_ be called
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM