一个类模板 Tree
template <typename NODETYPE> class Tree;在文件顶部写成这样,编译提示 error C2143: syntax error : missing ';' before ''template<''
;template <typename NODETYPE> class Tree;写成这样,通过运行
为什么啊

解决方案 »

  1.   

    我有两个类TreeNode 和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;
    };
      

  2.   

    看看include文件里面是不是有什么问题
      

  3.   

    说明问题在这一行前面,比如你前面的一个类(可能是通过头文件#include进来的)没有用分号结束。
      

  4.   

    在Tree类里全部代码:
    ;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;
    };
      

  5.   

    见过一个写程序这样出错的:
    把#include "stdafx.h"
    写成#include"stdafx.h"
    忘了用空格分开,你找找看有没有这样的错误。
      

  6.   

    在文件的开始加上#prgma once 尝试以下