2013-07-19 27 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

相關問題