尝试调用模板类的好友函数

凯蒂猫2016

我有一个模板,其中有一个朋友功能的声明,而在类之外,我有它的实现:

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中。

仍然高喊“未在此范围内声明”,“函数无法解析”,“符号无法解析”,“预期的主表达式之前”,“预期的主表达式>之前”

Shangtong Zhang

音频文件

#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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

递归调用模板类的成员函数

C ++-如何为类模板声明函数模板好友

模板类的好友函数中的链接错误

声明一个模板函数,将模板类好友的两个对象用于(仅)这两个专业化

在C ++中的命名空间中定义模板类的好友函数时遇到麻烦

为什么模板函数不能成为模板类的好友模板函数?

如何在模板化类中调用继承类的函数

模板类的嵌套类中的好友运算符

在模板类的构造函数末尾调用的模板的析构函数

有关在模板类中声明好友模板函数的问题(C ++)

模板类无法识别好友运算符

无法从模板类内的模板函数类调用类函数

尝试根据模板类型重载模板类中的虚函数

即使它们是私有的,基类的好友函数如何调用派生类的重写虚拟函数?(C ++)

将错误与模板类中的好友函数链接

如何使用参数调用类模板函数

调用类好友函数的类成员函数(所有同一个类)可能吗?

模板参数类的函数调用的返回类型

C ++如何使用模板类调用模板函数?

在类模板中未定义参数的情况下调用好友模板函数

从模板派生类调用模板基类的构造函数

如何使用好友函数在模板类外部重载运算符==?

C ++模板:从基类调用派生模板类的成员函数

尝试通过调用函数从类创建对象

类主体中定义的内联好友函数

模板模板类,如果存在则调用函数

仅调用某些模板类成员函数有效

c++调用模板类特化成员函数

从类中的模板函数调用模板函数