尝试调用模板的友元函数 class

Trying to call a friend function of template class

我有一个模板,其中我有一个友元函数的声明,在 class 之外,我有它的实现:

template<class TreeElement, class Comparator, class Operation>
class AVLTree {
public:
     template<class A, class B, class C >
     friend AVLTree<A, B, C> createEmptyAVLTree(int n);
...
}
template<class A, class B, class C>
AVLTree<A, B, C> createEmptyAVLTree(int n) { ... }

在其他文件中调用它的签名是什么?

我试过:

AVLTree<Post, postByLikesFunc, emptyFunc>::createEmptyTree();

但是它说无法解决。为什么 ?好友成员应该就是这样看的吧?

编辑:

AVLTree<Post, postByLikesFunc, emptyFunc> empty;
empty = createEmptyTreeAVLTree<Post, postByLikesFunc, emptyFunc>(size);
empty.arrayToTree(sorted_posts);

它的功能在 Troll.cpp 中。

仍然喊"was not declared in this scope"、“函数无法解析”、"Symbol couldnt not resolved"、"expected primary-expression before ,"、"expected primary-expression before >"

AVL.hpp

#ifndef AVL_hpp
#define AVL_hpp

template<class T1, class T2, class T3>
class AVLTree {
public:

    template<class A, class B, class C>
    friend AVLTree<A, B, C> createEmptyAVLTree(int n);
};

template<class A, class B, class C>
AVLTree<A, B, C> createEmptyAVLTree(int n) {
    return AVLTree<A,B,C>();
}

#endif

main.cpp

#include "AVL.hpp"

int main() {
    createEmptyAVLTree<int, int, int>(4);
    return 0;
}

createEmptyAVLTree 不在 AVLTree 的范围内。