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

时间:2013-07-19 15:43:31

标签: c++ constructor initialization

大家好,请原谅我的愚蠢问题。我正在尝试使用Sanders教授的4heap优先级队列,可从以下网址获取:

http://www.mpi-inf.mpg.de/~sanders/programs/spq/heap4.h

在函数内部我可以轻松完成:

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

问题是,我想在结构中分离myHeap和初始化的定义,如:

struct myStruct{
Heap4<int, int> myHeap;

void myInit(){
    myHeap=....
}

};

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

1 个答案:

答案 0 :(得分:1)

虽然你可能应该在构造函数初始化列表中初始化myHeap,但这是你可以在函数内为它赋值的方法:

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

编辑,因为似乎Heap4没有默认构造函数,那么必须在构造函数初始化列表中初始化它:

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