C++ 如何使用提供的头文件声明对象?(缺少模板参数错误)

C++ 如何使用提供的头文件声明对象?(缺少模板参数错误),c++,class,object,header-files,C++,Class,Object,Header Files,我的讲师为我们提供了一个头文件,它定义了类AvlTree,但由于某些原因,我无法在main()中正常声明对象。我做错了什么?以下是头文件的相关部分: #ifndef AVL_TREE_H #define AVL_TREE_H #include <iostream> // NULL, cin, cout using namespace std; template <typename Comparable> class AvlTree { public: Av

我的讲师为我们提供了一个头文件,它定义了类AvlTree,但由于某些原因,我无法在main()中正常声明对象。我做错了什么?以下是头文件的相关部分:

#ifndef AVL_TREE_H
#define AVL_TREE_H

#include <iostream> // NULL, cin, cout
using namespace std;

template <typename Comparable>
class AvlTree
{
  public:
    AvlTree( ) : root( NULL )
      { }
    AvlTree( const AvlTree & rhs ) : root( NULL )
    {
        *this = rhs;
    }

private:
  struct AvlNode
  {
    Comparable element;
    AvlNode    *left;
    AvlNode    *right;
    int        height;

    AvlNode( const Comparable & theElement, AvlNode *lt,
                                            AvlNode *rt, int h = 0 )
      : element( theElement ), left( lt ), right( rt ), height( h ) { }
  };

  AvlNode *root;
};

#endif
以下是错误(GNU编译器):

声明函数的语法为:

{return type} function-name( {parameter list} )
{parameter list}
是函数中逗号分隔参数的可选列表。粗略地说,每个参数都指定为

{type} {name}
参数的类型,后跟其名称(同样,粗略地说)

“AvlTree”不是一个类型。它是一个模板。要使其成为类型,需要提供适当的模板参数

void readFile(AvlTree<int> &t1, AvlTree<int> &t2)
void读取文件(AvlTree&t1、AvlTree&t2)
现在您声明了一个接受两个参数的函数,每个参数都是对
AvlTree
实例的引用,AvlTree是一种类型。“AvlTree”本身不是一种类型。它是一个模板的名称

这里,同样的问题导致了所有其他编译错误


ReadFile()
是否应该使用
AvlTree
参数,或者
AvlTree
参数,或者它本身应该是一个模板函数,这需要您去弄清楚。

如果您的指导老师给您提供了一个包含“使用命名空间std”的头文件,那么您的问题就不仅仅是这个作业了。你呆在这门课上,对你未来的职业前景是一种伤害。找另一位讲师。“使用命名空间std;”。在头文件中。好悲伤。逃跑尽可能快。谢谢你的意见,但这并不能帮我解决问题。请发一条,
可比的
没有定义,因此你的代码根本无法编译。你的问题不在这项作业上。你的问题是一个糟糕的教练。您可以通过切换类来解决此问题。你的导师并不真正了解C++。仅仅因为你的老师可以编写可编译代码并不意味着指导者知道C++。是的,代码编译没有问题,现在可以比较。没有任何编译错误。这个问题无法挽回。谢谢,这就是问题所在。很抱歉我缺乏知识,我才编写了2年,所以这是我第一次遇到模板。我以为他只是用它来掩盖元素的类型名,这样我就可以在里面放我想要的任何东西;我不知道我必须明确地定义我想要它采取什么。至于头文件和我的讲师的证书,我只能说这是一个关于数据结构和算法的课程,不是严格的编码,我知道他主要使用python。
void readFile(AvlTree &t1, AvlTree &t2)
{return type} function-name( {parameter list} )
{type} {name}
void readFile(AvlTree<int> &t1, AvlTree<int> &t2)