此问题在此处已有答案:
C++: Is it possible to friend all instances of a template class?(1个答案)
Make all derived template classes friend of other class in C++(2个答案)
3天前关闭。
假设我有一个模板类,它需要访问其任何特殊化的私有字段:
template<std::size_t SIZE> class Buffer {
template<std::size_t N> friend class Buffer<N>;
...
};
以下代码无法编译:
<source>:4:42: error: specialization of 'template<long unsigned int SIZE> class Buffer' must appear at namespace scope
4 | template<std::size_t N> friend class Buffer<N>;
| ^~~~~~~~~
我怎样才能实现这种行为?
1条答案
按热度按时间jv4diomz1#
考虑不带
friend
说明符的相同声明:这不是(主)类模板
Buffer
的声明,而是Buffer
的部分专用化的声明。(主)类模板本身的声明如下所示:
因此,添加
friend
说明符,就可以将类模板本身添加为朋友,这意味着要将它的所有特化添加为朋友: