2014-07-15 39 views
0

請幫助我我不知道會發生什麼。它顯示 錯誤C2955:「MyClass的」:使用類模板需要模板參數列表C++返回模板類中的受保護結構體指針

template <class T> class MyClass 
{ 
protected: 
    struct MyStruct 
    { 
    }; 

    MyStruct* GetElement(...) const; 
} 

//error C2955: 'MyClass' : use of class template requires template argument list 
//I tried: 
// MyClass<T>::MyStruct* MyClass<T>::GetElement(...) const 
// MyStruct* MyClass<T>::GetElement(...) const 
// but none works. This method doesn't use T. 
template<class T> 
MyClass::MyStruct* MyClass<T>::GetElement(...) const 
{ 

} 

回答

0

GetElement返回類型應該寫成typename MyClass<T>::MyStruct*

template<class T> 
typename MyClass<T>::MyStruct* MyClass<T>::GetElement(...) const 
{ 

} 

<T>是必要的,因爲MyClasstemplate class。需要typename,因爲MyClass<T>::MyStructdependent name

1

These fixes work

template <class T> class MyClass { 
protected: 
    struct MyStruct 
    { 
    }; 

    MyStruct* GetElement(...) const; 
}; // << add semicolon 

template <class T> 
// Add typename 
typename MyClass<T>::MyStruct* MyClass<T>::GetElement(...) const { 
    // Add <T> ^^^ 
    return NULL; 
} 

任何類型取決於必須typename指定模板參數。