2013-07-19 24 views
-1

您好专家,原谅我的相当愚蠢的问题。我试图用桑德斯教授4heap优先级队列,请访问:C++单独的定义和对象的构造函数

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

虽然你可能应该在构造函数初始化列表初始化myHeap,这是你怎么能一个值分配给它一个函数内部:

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

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

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

它不编译。错误:没有匹配函数调用'Heap4 :: Heap4()' – Alexandros

+0

@AlexandrosE。看我的编辑。 – juanchopanza

+0

谢谢,你的建议做到了。 – Alexandros

相关问题