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

Pau*_*nta 3 c++ templates

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

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)
}
Run Code Online (Sandbox Code Playgroud)

Nav*_*een 10

你错过了typename关键字.有关需要原因的详细信息,请参阅此问题typename.这段代码应该编译:

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)
}
Run Code Online (Sandbox Code Playgroud)