一个类模板 Tree
template <typename NODETYPE> class Tree;在文件顶部写成这样,编译提示 error C2143: syntax error : missing ';' before ''template<''
;template <typename NODETYPE> class Tree;写成这样,通过运行
为什么啊
template <typename NODETYPE> class Tree;在文件顶部写成这样,编译提示 error C2143: syntax error : missing ';' before ''template<''
;template <typename NODETYPE> class Tree;写成这样,通过运行
为什么啊
TreeNode 是结点类
Tree是树类
他们都是模板类
在Tree里是这样的
;template <typename NODETYPE> class Tree;template <typename NODETYPE>
class TreeNode
{
friend class Tree<NODETYPE>;
public:
TreeNode(const NODETYPE &d)
:leftPtr(0),data(d),rightPtr(0){}
NODETYPE getData()const
{
return data;
}
private:
TreeNode<NODETYPE> *leftPtr;
NODETYPE data;
TreeNode<NODETYPE> *rightPtr;
};
;template <typename NODETYPE> class Tree; //这句是Tree.h的第一句,前面加个分号就运行通过了,template <typename NODETYPE>
class TreeNode
{
friend class Tree <NODETYPE>;
public:
TreeNode(const NODETYPE &d)
:leftPtr(0),data(d),rightPtr(0){}
NODETYPE getData()const
{
return data;
}
private:
TreeNode <NODETYPE> *leftPtr;
NODETYPE data;
TreeNode <NODETYPE> *rightPtr;
};
Tree类里头:
#include"TreeNode.h"template <typename NODETYPE>
class Tree
{
public:
Tree();
void insertNode(const NODETYPE &);
void preOrderTraversal()const;
void inOrderTraversal()const;
void postOrderTraversal()const;
private:
TreeNode<NODETYPE> *rootPtr;
void insertNodeHelper(TreeNode<NODETYPE> **,const NODETYPE &);
void preOrderHelper(TreeNode<NODETYPE> *)const;
void inOrderHelper(TreeNode<NODETYPE> *)const;
void postOrderHelper(TreeNode<NODETYPE> *)const;
};
把#include "stdafx.h"
写成#include"stdafx.h"
忘了用空格分开,你找找看有没有这样的错误。