我正在尝试将C ++项目移植到iOS。它可以在Linux和Windows以及MSVC上的QtCreator中正常编译。现在在Xcode / GCC上,使用某个模板化类,我得到以下错误:“错误:模板参数列表太少”。导致此错误的代码如下所示:template <typename TA, typename TB, int Type>class MyClassImpl{public: MyClassImpl(); virtual int GetType() const { return type; }};typedef MyClassImpl<float, int, 12> MyFloatIntClass;MyFloatIntClass::MyFloatIntClass(){...}int MyFloatIntClass::GetType() const{ return 22;}我猜想有关typedef语法的内容是非法的,并且GCC在标准上更加严格。谁能告诉我问题出在哪里以及如何解决? 最佳答案 这只是一个猜测,但是您是否需要添加template ?由于这是模板专业化,因此我认为它仍然需要作为模板。例如template<>MyFloatIntClass::MyClassImpl() {}template<>int MyFloatIntClass::GetType() const { return 22;}编辑:从modelnine的答案中得知,它需要ctor的untypedef'd名称。EDIT2:以下代码对我来说很好:template <typename TA, typename TB, int Type>class MyClassImpl{public: MyClassImpl(); MyClassImpl(const MyClassImpl<TA, TB, Type>&); virtual int GetType() const { return Type; } const MyClassImpl<TA, TB, Type>& operator=(const MyClassImpl<TA, TB, Type>&);};typedef MyClassImpl<float, int, 12> MyFloatIntClass;template<>MyFloatIntClass::MyClassImpl(){ //}template<>MyFloatIntClass::MyClassImpl( const MyFloatIntClass& rhs ){ //}template<>const MyFloatIntClass& MyFloatIntClass::operator=( const MyFloatIntClass& rhs ){ return *this;}template<>int MyFloatIntClass::GetType() const{ return 22;}关于c++ - GCC模板错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10076502/
10-12 21:21