我正在移植一些來自Windows的模板代碼,我在iPhone 3.2 SDK上遇到了一些編譯器差異。類模板的成員函數內部iPhone SDK 3.2上的模板編譯錯誤
原始代碼是:
return BinarySearch<uint32, CSimpleKey<T> >(key);
其中BinarySearch的是從另一模板繼承的方法。
這將產生以下錯誤:
csimplekeytable.h:131: error: no matching function for call to 'BinarySearch(NEngine::uint32&)'
在Visual Studio編譯器似乎走到模板層次不錯,但GCC需要我完全限定在函數來自(我已經通過固定同樣驗證了這一點問題與模板成員變量的方式)。
所以我現在需要改變成這樣:
return CSimpleTable<CSimpleKey<T> >::BinarySearch<uint32, CSimpleKey<T> >(key);
現在產生以下錯誤:
csimplekeytable.h:132: error: expected primary-expression before ',' token
csimplekeytable.h:132: error: expected primary-expression before '>' token
有些撓頭之後,我相信這是怎麼回事就在於它的努力在BinarySearch出於某種原因作爲「小於」運算符之前解決'<'。
所以有兩個問題: - 我在正確的道路上解釋我的錯誤嗎? - 我該如何解決?
-D
是的! 「this->」起作用,因爲你解釋的原因是一種更明顯的選擇。衛生署! 謝謝! – 2010-05-21 23:10:25