模板互相交流

Pau*_*nta 2 c++ templates syntax-error

我有一个ResourcePtr<T>类模板和一个ResouceManager<T>模板.我希望这两个人互相交朋友.如果我执行以下操作,则会出现编译错误; 我怎样才能解决这个问题?

template<class T>
class ResourcePtr
{
    friend class ResourceManager<T>;
};

template<class T>
class ResourceManager
{
    friend class ResourcePtr<T>;
};
Run Code Online (Sandbox Code Playgroud)

错误C2059:语法错误:'<'
错误C2238:';'之前的意外标记

APr*_*mer 6

像往常一样:在另一个的定义之前声明一个.

template<class T>
class ResourceManager;

template<class T>
class ResourcePtr
{
    friend class ResourceManager<T>;
};

template<class T>
class ResourceManager
{
    friend class ResourcePtr<T>;
};
Run Code Online (Sandbox Code Playgroud)

  • @Paul:它有不同的含义.AProgra的方法只声明`ResourceManager <T>`**,同一个T**是朋友,你的方法声明任何ResourceManager都是朋友. (2认同)