在GCC下編譯:錯誤移植C++模板從GCC到Visual C++
cvec.hpp:
template <class T>
class cvec : public deque<T>
{
class deque<T>::iterator Find(T);
};
cvec.cpp:
template <class T>
class deque<T>::iterator cvec<T>::Find(T element)
{
}
在Visual C++,得到:
錯誤C2242「typedef名稱不能跟隨類/結構/聯合。」
「」我將頭文件中的「class」更改爲「typename」,但接收到錯誤C3860 - 模板參數列表必須按照模板參數列表中使用的順序列出參數。在這種情況下只有一個參數T。除非編譯器對Find(T元素)感到困惑?
哪個版本的Visual C++? – 2010-08-04 15:39:08
Visual Class 2008 – Naish44 2010-08-04 17:22:14
'class'和'typename'在這種情況下是不可互換的。 「班」在那裏不合法。 – jalf 2010-08-05 00:13:27