我有两个模板类,templateClass1和templateClass2。我想在templateClass2中使用templateClass1的私有变量和方法。是否可以通过在c ++中使用friend关键字来实现?
萨米特
答案 0 :(得分:1)
我知道这篇文章可能已经死了,但对其他偶然发现的人来说......
templateClass1.h
template <class T> class templateClass2; // forward declare
template <typename T>
class templateClass1 {
friend templateClass2<T>;
};
templateClass2.h
template <class T> class templateClass1; // forward declare
template <typename T>
class templateClass2 {
friend templateClass1;
}
答案 1 :(得分:-1)
可以拥有任何类型的朋友,但在提供模板参数之前,模板不是类型。所以一般来说,你必须对你希望成为朋友的每个完整类型都有一个专业化。这将推动您尝试将类型作为模板参数传递给朋友,但是您无法提供将被模板化的模板类型。
代表。这是非法的
template <class T>
class A
{
friend class T;
};
根据这些规定,它很难做任何意味着充满模板和朋友的事情。