模板成员函数定义的问题
#ifndef BINARY_H
#define BINARY_H
template <typename Type>
class BinarySearchTree
{
public:
BinarySearchTree();
//BinarySearchTree(const BinarySearchTree&);
//~BinarySearchTree();
const Type& findMin() const;
const Type& findMax() const;
bool contains(const Type&);
void insert(const Type&);
void remove(const Type&);
void outPut();
private:
struct BinaryNode{
Type data;
BinaryNode *right, *left;
BinaryNode(const Type &initElement, BinaryNode *r = 0, BinaryNode *l = 0)
: right(r), left(l), data(initElement){}
};
BinaryNode *root;
bool contains(const Type&, BinaryNode*);
void insert(const Type&, BinaryNode*&);
void remove(const Type&, BinaryNode*&);
BinaryNode* findMin(BinaryNode*) const;
BinaryNode* findMax(BinaryNode*) const;
void InOrder(BinaryNode*) const;
void makeEmpty(BinaryNode *t);
};
//#include "BinarySearchTree.cpp"
#endif
小弟的问题是:如何在 .cpp文件中定义
BinaryNode* findMin(BinaryNode*) const;这个函数我这样写报错了:
template <typename Type>
BinarySearchTree<Type>::BinaryNode* BinarySearchTree<Type>::findMin(BinaryNode* t) const
{
if(t == 0)
return 0;//ERROR
if(t->left == 0)
return t;
else
return findMin(t->left);
}
求解!!
相关推荐
在C++泛型编程中如何只特化类的某个成员函数
我们知道在C++模板编程中如果我们特化或是偏特化某个模板类, 我们需要重写整个模板类中的所有函数, 但是这些代码通常是非常相似的, 甚至在某些情况下可能只有一两个函数会不一样,其他函数都是一样的。在这种情况下,同时存在多份相同的代码,对我们维护这些代码是非常不利的, 我们好只需要特化其中不一样的那个函数。 比如下面这个模板类: template struct Base { //other function //…. void Func(){ cout << "primary function" <<
cpp代码-成员函数指针使用
cpp代码-成员函数指针使用
C++ 11实现检查是否存在特定的成员函数
C++11/14相比以往的C++98/03在很多方面做了简化和增强,尤其是在泛型编程方面,让C++的泛型编程的威力变得更加强大,下面这篇文章主要介绍了利用C++ 11实现检查是否存在特定成员函数的相关资料,需要的朋友可以参考下。
如何让类的成员函数作为回调函数
如何让类的成员函数作为回调函数 回调函数大家都懂得 需要了解下
C++类模板详解[项目源码]
本文详细介绍了C++中类模板的语法、特性及应用场景。主要内容包括:类模板的基本语法与示例;类模板与函数模板的区别(如默认参数支持);成员函数创建时机(调用时创建);类模板对象作为函数参数的三种传递方式;类模板与继承的关系及注意事项;成员函数的类外实现方法;分文件编写的解决方案(.hpp文件的使用);类模板与友元的关系(全局函数的类内/外实现);最后通过一个综合案例(自定义数组类模板)展示了类模板的实际应用。文章结合代码示例,系统性地讲解了类模板的核心知识点,适合有一定C++基础的开发者学习参考。


