C++:返回指向模板子类的指针

问题描述:

做这种事情的语法是什么?当我尝试编译下面的代码时,它告诉我a ';' was expected before '*'指向函数的返回类型ResourceManager<T>::ResourceWrapper*C++:返回指向模板子类的指针

template<class T> 
class ResourceManager 
{ 
    private: 
    struct ResourceWrapper; 
    ResourceWrapper* pushNewResource(const std::string& file); 
}; 

// (Definition of ResourceWrapper not shown.) 

template <class T> 
ResourceManager<T>::ResourceWrapper* ResourceManager<T>::pushNewResource(
    const std::string& file) 
{ 
    // (Irrelevant details) 
} 

您错过了typename关键字。有关为什么需要typename的更多详细信息,请参阅此question。此代码应编译:

template<class T> 
class ResourceManager 
{ 
    private: 
    struct ResourceWrapper; 
    ResourceWrapper* pushNewResource(const std::string& file); 
}; 

// (Definition of ResourceWrapper not shown.) 

template <class T> 
typename ResourceManager<T>::ResourceWrapper* ResourceManager<T>::pushNewResource(
^^^^^^^^ const std::string& file) 
{ 
    // (Irrelevant details) 
}