2011-05-04 77 views
0

出於某種原因,我似乎無法在打電話給我全局模板功能 GCC ...問題的全局模板功能

在「 globals.h」定義

全球功能:

template <typename T1, typename T2> inline T1 Min (const T1 & v1, const T2 & v2) 
{ 
    return v1 < v2 ? v1 : v2; 
} 

呼叫以從 「test.h」 定義類的函數:

#include "globals.h" 

class Test 
{ 
public: 
    Test() 
    { 
     int a = 2; 
     int b = 3; 
     int c = Min(a, b); //error: 'Min' was not declared in this scope 
     int d = ::Min(a, b); //error: '::Min' has not been declared 
     int e = Min<const int, const int>(a, b); //error: expected primary-expression before 'const' 
     int f = this->Min(a, b); //error: 'class Test' has no member named 'Min' 
    } 
}; 

我該怎麼辦?

+0

你是否在'globals.h'中包含'Test.h'? – Naveen 2011-05-04 07:39:14

+0

不,我爲什麼要那樣做? – Ryan 2011-05-04 07:40:18

+0

只是懷疑一個圓形的包容。否則,代碼應該很好地編譯(除了最後一個語句'int f = ...')。 – Naveen 2011-05-04 07:43:29

回答

1

g ++ 4.3.4版本正確編譯它們,只給出最後一行的錯誤。見http://ideone.com/cD13Y。你使用什麼版本?

+0

嗯......我使用蘋果GCC 4.2.1 – Ryan 2011-05-04 07:50:25

+0

其實,這個問題真的與包括......感謝,納文! – Ryan 2011-05-04 09:27:00