我有一个带有三个模板参数的类模板 Obj1
template < class A, class B, class C >
class Obj1
{
// some implementation
};
和带有两个模板参数的第二类模板 Obj2,
template < class A, class B >
class Obj2
{
// some implementation
};
所以我的问题如下:
我想让类 Obj1 成为类 Obj2 的友元,前两个模板参数具有相同的值,但我不知道确切的语法如何编写, 一开始我是这样尝试的
template < class A, class B>
class Obj2
{
template< class C>
friend class Obj1<A,B,C>;
};
但它没有编译,如果可以的话请帮助我。
最佳答案
您问题的答案在这里:https://stackoverflow.com/a/1458897/2436175 “你只能‘结交’一个类模板的所有实例或特定的完全特化。”
所以,这是允许的:
template < class A, class B, class C >
class Obj1
{
// some implementation
};
template < class A, class B>
class Obj2
{
public:
template <class C, class D, class E> friend class Obj1; ///All instances
};
template < class A, class B>
class Obj3
{
public:
friend class Obj1<A,B,int>; ///One specific instantiation, possibly depending from your own templated parameters
friend class Obj1<A,B,A>; ///One specific instantiation, possibly depending from your own templated parameters
friend class Obj1<char,float,int>; ///One specific instantiation, possibly depending from your own templated parameters
};
关于c++ - 具有更多模板参数的模板友元类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23920640/