Cem*_*ncu 10 c++ templates friend
我正在尝试使用不同的模板参数访问模板类的受保护变量.带有模板参数的朋友声明会出现以下错误:
不允许使用多个模板参数列表
我的代码是
template<class O_, class P_>
class MyClass {
//multiple template parameter lists are not allowed
template<class R_> friend class MyClass<R_, P_>
//syntax error: template<
friend template<class R_> class MyClass<R_, P_>
public:
template<class R_>
ACopyConstructor(MyClass<R_, P_> &myclass) :
SomeVariable(myclass.SomeVariable)
{ }
protected:
O_ SomeVariable;
};
Run Code Online (Sandbox Code Playgroud)
如果我删除保护和朋友声明它的工作原理.
CB *_*ley 11
从标准:14.5.3/9 [temp.friend],"朋友模板不应被声明为部分特化.",因此您只能"成为"类模板或特定完整专业化的所有实例.
在您的情况下,由于您希望成为具有一个免费模板参数的实例化的朋友,您需要将类模板声明为朋友.
例如
template< class A, class B > friend class MyClass;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3142 次 |
| 最近记录: |