Bloodshed Dev-C ++编译器错误*二叉树

时间:2012-09-15 15:29:14

标签: c++ compiler-errors binary-tree dev-c++

我想要反馈我的代码。这是一个学校的作业,我们被要求编写一个交换左侧和右侧二叉树的函数。我们教授给我们的课程是swapBinaryTrees,其余的留给我们。我收到了很多编译器错误,我不确定我的语法出错了。当我编译它时遇到错误,就像第14行预期的init-declarator'<'令牌引用中的行是

void binaryTreeSearch<elemType>::swapSubtreeNodes()

第19行的错误是

void binaryTreeSearch<elemType>::swapSubtreeNodes(nodeType<elemType> *p)

对于上述两种情况,我有另一个错误,表示期待&#39 ;;&#39;之前&#39;&lt;&#39;代币 然后我在我的主函数

中得到未声明的标识符
binaryTreeSearch<int> tree;

在&#34; int&#34;之前,我也得到了预期的主要表达。和预期&#39 ;;&#39;之前&#34; int&#34; 然后它告诉我cout和cin没有声明我不知道干草在这里发生了什么。我将在下面发布我的整个代码,非常感谢任何帮助。

template <class elemType>
struct nodeType
{
       elemType info;
       nodeType<elemType> *lLink;
       nodeType<elemType> *rLink;
};
template <class elemType>
class swapSubtreeNodes
{

};
template <class elemType>
void binaryTreeSearch<elemType>::swapSubtreeNodes()
{
     swapSubtreeNodes(root);
}
template <class elemType>
void binaryTreeSearch<elemType>::swapSubtreeNodes(nodeType<elemType> *p)
{
    root = temp;
    nodeType<elemType> *root;
    nodeType<elemType> *temp;
    if (p == null)
    {
          return;
    }
    else
    {
        swapSubtreeNodes(p->lLink);
        swapSubtreeNodes(p->rLink);                                  
        temp = p->lLink;
        p->lLink = p->rLink;
        p->rLink = temp;
    }
}
int main()
{
    binaryTreeSearch<int> tree;
    int num;
    cout << "This is how we swap'em" << endl;
    cout << "Insert number (press enter after each one entered)." << endl;
    cout << "Enter -999 to complete" << endl;
    tree.insert(0);
    cin >> num;
    while (num != -999)
    {
          tree.insert(num);
          cin >> num;
    }
    cout << "Your swapped binary tree is " << endl;
         tree.swapSubtreeNodes();
         tree.printTree();
         cout << endl;


}

1 个答案:

答案 0 :(得分:0)

您没有声明binaryTreeSearch类型。因此,您无法为其实现成员函数。

你的编译器告诉你它不知道你的意思
template <class elemType>
void binaryTreeSearch<elemType>::swapSubtreeNodes()

位于<的位置,因为它不明白您打算binaryTreeSearch成为一个班级。


写作时你在做什么:

template <class elemType>
void binaryTreeSearch<elemType>::swapSubtreeNodes()
{
     swapSubtreeNodes(root);
}
这是这个;您告诉C ++您打算实现类型为swapSubTreeNodes的成员函数int ()(),该成员函数属于名称的结构化类型(即classstruct){ {1}}使用一个参数进行模板化。但是,您的编译器(任何编译器确实)都会抱怨,因为没有这样的类型。你如何解决这个问题取决于你真正打算做什么。一种选择可以是声明类型:

binaryTreeSearch

这不会修复所有错误,但可能是你打算做的。您可能还想添加适当的构造函数和析构函数。