我应该如何为函数创建文件?

时间:2014-10-28 07:22:49

标签: c++ binary-search-tree

我正在创建一个BST类,我希望将遍历函数(inorer,preorder,postorder,levelscan)放在一个单独的文件中。我不确定如何继续这个。我尝试制作一个.h文件,但它没有用。既然它不是真正的类定义,我还应该进行Traversal类吗?或者直接进行功能定义?

#ifndef TREETRAV_H
#define TREETRAV_H

#include "TreeNode.h"
#include <iostream.h>
#include <stdlib.h>

template <class T>
class TreeTrav
{
friend class BinSTree<T>;
public:
void PreOrderVisit(TreeNode *t, void visit(T& item));
void InOrderVisit(TreeNode *t, void visit(T& item));
void PostOrderVisit(TreeNode *t, void visit(T& item));
void LevelScan(TreeNode *t, void visit(T& item));

};
#endif

1 个答案:

答案 0 :(得分:2)

由于TreeTrav是类模板,因此无法在单独的CPP文件中实现此类。这不行。模板遵循两阶段编译过程。第一阶段将检查基本语法(如正确的循环使用,正确的括号等)。第二阶段实际上将根据模板类型进行编译。因此,.CPP文件只有第一阶段的编译,后来你会收到链接器错误(例如TreeTrav<int>::foo未定义)。

最好只在头文件中实现所有类(模板)。或者您可能必须将#include<cpp-file-name>放在此头文件的末尾。