C++ 模板类和朋友模板函数
C++入门:模板和函数C++ 模板类和朋友模板函数,c++,templates,C++,Templates,C++入门:模板和函数 template <typename> class BlobPtr; template <typename> class Blob; template <typename T> bool operator==(const Blob<T>&, const Blob<T>&); template <typename T> class Blob { friend class Bl
template <typename>
class BlobPtr;
template <typename>
class Blob;
template <typename T>
bool operator==(const Blob<T>&, const Blob<T>&);
template <typename T>
class Blob
{
friend class BlobPtr<T>;
friend bool operator==<T>(const Blob<T>&, const Blob<T>&);
};
模板
BlobPtr类;
模板
类Blob;
模板
布尔运算符==(常量Blob&,常量Blob&);
模板
类Blob
{
朋友级BlobPtr;
友元布尔运算符==(常量Blob&,常量Blob&);
};
然后:
blobca;
斑点;
BlobPtr
的成员可以访问ca的非公共部分(或任何
其他Blob对象),但ca对ia(或任何其他
Blob)或Blob的任何其他实例化
问题:
我想测试代码。如何使用ca访问ia的非公共部分?为了澄清,我知道这是不可能的,但我想测试代码以查看错误。您可以在使用
friend
之前添加模板
模板
类Blob
{
模板
朋友级Blob;
公众:
模板
布尔运算符==(常量Blob和其他)
{
返回i==other.i;
}
私人:
TⅠ;
};
Blob i;
Blob j;
int main()
{
i==j;
}
添加模板使每个Blob
类成为彼此的朋友类。因此,Blob
的每个成员函数都可以访问Blob
的私有成员,反之亦然。设置Blob
的私有成员和尝试访问另一个Blob
专业的私有成员的成员函数。(例如,Blob::foo()
尝试访问Blob
的私有成员,反之亦然。)。
Blob<char> ca;
Blob<int> ia;