Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 模板类和朋友模板函数_C++_Templates - Fatal编程技术网

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

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 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;