c++ - 多参数模板不能很好地处理友元声明

标签 c++ g++

以下代码片段在 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只能用于限定从属名称,KV不是。

关于c++ - 多参数模板不能很好地处理友元声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9242799/

相关文章:

c++ - 静态库与动态库

c++ - typeid,如何仅获取类型名称

c++ - 调用指向成员函数的指针 C++

c++ - 编译错误: "stddef.h: No such file or directory"

c++ ->?= 运算符是什么意思?

C++ 错误 : qualifiers can only be specified

c++ - 在从模板化基类派生的类中使用虚方法

c++ - 在 C++/G++ 中是否有*任何*方法来获取 C 样式数组的长度?

c++ - 与 std::chrono::system_clock/std::chrono::high_resolution_clock 的时差

c++ - Gcc - undefined reference ,但库包含匹配的符号