C++ 如何使用提供的头文件声明对象?(缺少模板参数错误)
我的讲师为我们提供了一个头文件,它定义了类AvlTree,但由于某些原因,我无法在main()中正常声明对象。我做错了什么?以下是头文件的相关部分: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
#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)