做这样的事情的语法是什么?当我尝试编译下面的代码时,它告诉我 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)
}
最佳答案
您缺少 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)
}
关于C++:返回指向模板子类的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5617303/