C++分离了对象的定义和构造函数

C++ separate definition and constructor of object

本文关键字:定义 构造函数 对象 分离 C++      更新时间:2023-10-16

各位专家,请原谅我提出的这个相当愚蠢的问题。我正在尝试使用Sanders教授的4heap优先级队列,可在以下网址获得:

http://www.mpi-inf.mpg.de/~砂光机/程序/spq/heap4.h

在一个我可以轻松完成的功能中:

Heap4<int, int> myHeap(myMax, -myMax, 10000);

问题是,我想把myHeap的定义和结构内部的初始化分开,比如:

struct myStruct{
Heap4<int, int> myHeap;
void myInit(){
    myHeap=....
}
};

因为我想避免通过引用在同一结构中使用myHeap的其他函数来传递myHeap。这可能吗?

尽管您可能应该在构造函数初始化列表中初始化myHeap,但这就是在函数中为其赋值的方法:

myHeap = Heap4<int, int>(myMax, -myMax, 10000);

编辑因为Heap4似乎没有默认构造函数,所以您必须在构造函数初始化列表中对其进行初始化:

struct myStruct
{
  Heap4<int, int> myHeap;
  myStruct() : myHeap(myMax, -myMax, 10000) {}
};