4
类别B<certain X>
想与任何一个C<any,certain X>
成为好友。
我拉我的头发,找到如何做到这一点。如何使用由“模板使用”定义的模板(别名)类的朋友?
下面是成功编译的完整代码,只要我不添加有问题的行。
#include <string>
using namespace std;
enum EN{ EN1,EN2 };
template<EN T1,class T2> class C{
public: C(){
std::cout<<T1<<std::endl;
}
};
template<class T2> class B{
template<EN T1> using CT = C<T1,T2>;
//template<EN TX> friend class CT; //<-- error if insert this line
public: static void test(){
CT<EN1> ct;
}
};
int main() {
B<int>::test();
return 0;
}
下面是我试了一下(全部失败): -
template<EN T1> friend class C<T1,T2>;
template<EN TX> friend class CT;
template<typename TX> friend class CT;
template<class TX> friend class CT;
template<class TX> friend class CT<TX>;
template<typename> friend typename CT;
问:什么是正确的说法(1线)插入?
如果可能,我希望朋友声明使用CT
而不是C
。
我已阅读a similar question和this,但它们比我的简单。
(我是新来的C++)。
与普通C(与CT相对照)相同吗?即需要2个朋友的陈述? – javaLover
@javaLover是的,它是一样的。 – songyuanyao