我有一个模板,其中有一个朋友功能的声明,而在类之外,我有它的实现:
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中。
仍然高喊“未在此范围内声明”,“函数无法解析”,“符号无法解析”,“预期的主表达式之前”,“预期的主表达式>之前”
音频文件
#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的范围内。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句