C++:编译错误:"<"标记之前的预期初始值设定项

C++: Compile Error: expected initializer before ‘<’ token

本文关键字:错误 编译 lt C++      更新时间:2023-10-16

这是一个与家庭作业相关的问题,但编译器问题不是家庭作业,我已经实现了我需要编写的函数,现在只需要弄清楚这个编译器错误。
我尝试过搜索,到目前为止,我得到的结果与我的问题接近,不符合导致编译器错误的原因。

二进制树.h

#include <iostream>
#include "orderedLinkedList.h"
using namespace std;
// Definition of the Class
template <class elemType>
class binaryTreeType
{
[rest of definition]
public:
[rest of declarations]
    void createList(orderedLinkedList<elemType>& list);
[rest of declarations]
private:
    void inorderToList(nodeType<elemType> *p, orderedLinkedList<elemType>& tList) const; 
[.... then the definitions]
template <class elemType>
void bSearchTreeType<elemType>::createList(orderedLinkedList<elemType>& tList)
{
    inorderToList(this->root, tList);
}
// copies to list
template <class elemType>
void bSearchTreeType<elemType>::inorderToList(nodeType<elemType> *p, 
                                              orderedLinkedList<elemType>& tList) const
{
    if (p != NULL)
    {
        inorder(p->lLink);
        tList.insert(p->info);
        inorder(p->rLink);
    }   
 }

我收到错误:

binaryTree.h:250:错误:"<"标记之前的预期初始值设定项

binaryTree.h:257:错误:"<"标记之前的预期初始值设定项

createList() 和 inorderToList() 的函数定义分别是第 250 行和第 257 行。 所以我有点困惑我在这里做错了什么,当然这很简单。

好的,弄清楚我做错了什么。

我最初将模板放在派生类 (bSearchTreeType) 中,当我将其移动到父类中时忘记更新方法定义。

所以新代码(第 250 和 257 行):

template <class elemType>
// below is 250
void binaryTreeType<elemType>::createList(orderedLinkedList<elemType>& tList)
{
[... same as in original post]
}
template <class elemType>
// below is 257
void binaryTreeType<elemType>::inorderToList(nodeType<elemType> *p, 
                orderedLinkedList<elemType>& tList) const
{
[... same as in original post]
}