多参数模板不能很好地处理友元声明
Multi parameter template not playing nicely with friend declaration
以下代码段在Visual Studio和g++中都可以正常工作。
template<typename T> class BST;
template<typename T>
class BSTNode
{
friend class BST<T>;
...
而这个片段在VS中运行良好,但在g++中则不然
template<typename K, typename V> class Map;
template<typename K, typename V>
class MapPair
{
friend class Map<typename K, typename V>;
...
这个代码出了什么问题?我得到的错误是没有帮助的,但这里是
error: wrong number of template arguments (1, should be 2)
error: provided for ‘template<class K, class V> struct Map’
error: friend declaration does not name a class or function
有什么想法吗?
说出friend class Map<K, V>;
。typename
只能用于限定从属名称,而K
和V
不是。
相关文章:
- C++模板来检查友元函数的存在
- 模板类无法识别友元运算符
- 如何使用单独文件中的派生类访问友元函数对象
- 模板化的类和友元函数
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- 如何在嵌套类中正确使用友元声明?
- 友元函数无法访问私有数据成员 (c++)
- 继承和友元函数,从基类访问受保护的成员
- 将子类方法声明为基类的友元
- 如何在友元函数中使用静态成员而不添加前缀 [类名]::
- 在将函数声明为友元时,尖括号的含义是什么?
- 在模板类之外定义友元函数的正确方法是什么?
- 2个模板化类的非模板友元函数未定义引用错误
- 友元方法作为常量
- C++ 友元函数和私有构造函数
- 使第二个类的构造函数成为第一个类中的友元函数
- 在为嵌套类定义行外友元时,我真的必须打破封装吗?
- 未定义的类模板不会实例化以检查友元函数
- C++类中的友元函数有问题?
- 多参数模板不能很好地处理友元声明