如何将模板 class 与其朋友模板 class 分离到不同的头文件中?
How to separate a template class from its friend template class into different header files?
一个文件包含模板class A和模板class B。A是B的朋友。
我想把它们分成不同的文件。如何处理?
A.h
#if !defined(FILE_A_H)
#define FILE_A_H
template<class T>
class A
{
template<class> friend class B;
// ...
};
#endif
B.h
#if !defined(FILE_B_H)
#define FILE_B_H
template<class T> class B { /* ... */ };
#endif
注意,如果在友元声明中使用的class的名称还没有声明,则当场向前声明(见http://en.cppreference.com/w/cpp/language/friend)。
更多详情:
一个文件包含模板class A和模板class B。A是B的朋友。
我想把它们分成不同的文件。如何处理?
A.h
#if !defined(FILE_A_H)
#define FILE_A_H
template<class T>
class A
{
template<class> friend class B;
// ...
};
#endif
B.h
#if !defined(FILE_B_H)
#define FILE_B_H
template<class T> class B { /* ... */ };
#endif
注意,如果在友元声明中使用的class的名称还没有声明,则当场向前声明(见http://en.cppreference.com/w/cpp/language/friend)。
更多详情: