2013-04-04 75 views
0

具體細節:C++模板:可以/如何使用結構作爲模板的實例化類型?

我想有下面的結構

struct edgeT {  
    string home;  
    string away;  
    int weight; 
}; 

再有型edgeT的優先級隊列。

我寫了一個快速程序來測試優先級隊列,但我收到以下錯誤消息。

模板類minPQ「爲模板參數'使用本地型 '的Main():: edgeT'

我剛纔定義

/宣稱在main()例程開始時的結構。

該結構是否必須在其他地方定義?

+0

你能告訴我們你是如何試圖使用'minPQ'和錯誤是哪一行嗎? – 2013-04-04 15:06:14

+0

您錯過了'edgeT'的一個嚴格的弱排序比較器,但是您引用的錯誤指向了另一個錯誤。 – juanchopanza 2013-04-04 15:07:29

+0

將'edgeT'的定義移動到'main'之外(它看起來像您可能錯誤地將它命名爲'Main',C++區分大小寫)。或者,如果您使用的是gcc,請嘗試使用'-std = C++ 11'開關進行編譯。 – Praetorian 2013-04-04 15:08:51

回答

1

只有從C++ 11開始,才能使用函數中定義的類型作爲模板參數。要麼使用C + 11,要麼將結構定義放在命名空間範圍內。