“错误:在'{'token'尝试继承之前的预期类名

时间:2013-05-12 01:29:03

标签: c++ list templates

我尝试创建一个从列表继承的队列并得到此错误:

"error: expected class-name before '{' token"

这些是我的代码......

cola_lista.cpp

#ifndef cola_hereda_lista
#define cola_hereda_lista

#include <iostream>
#include "lista_t.hpp"
//#include "nodo_t.hpp"

using namespace std;

template <class T>

class cola : public lista{
    private:
        nodo<T> *frente, *final;
    public:
        cola();
        bool es_vacia();
        int longitud(); //  
        void encolar(T e);
        void desencolar(); //precondicion ¬es_vacia
        T obtener_frente(); //precondicion ¬es_vacia
        ~cola();    
};

#endif

lista.hpp

#ifndef lista_template
#define lista_template

#include <iostream>
#include "nodo_t.hpp"

using namespace std;

template <class T>

class lista{
    private:
        nodo<T> *primero, *ultimo;
        int cantidad;
    public:
//
};

nodo.hpp

#include <iostream>

#ifndef nodo_template
#define nodo_template

using namespace std;

template <class T>

class nodo{
    private:

        T elemento;
        nodo<T> *siguiente;

    public:

        nodo();
        T get_elem();
        void set_elem(T e);
        nodo<T>* get_siguiente();
        void set_siguiente(nodo<T> *sigui);
        ~nodo();
};

我已经花了好几个小时试图找出代码中出现什么问题。救命啊!

2 个答案:

答案 0 :(得分:1)

将您的代码更改为此

template <class T>
class cola : public lista<T>{

答案 1 :(得分:0)

您需要调整cola的声明:

template <class T>
class cola : public lista<T>
                         ^^^

cola是一个类模板,您需要指定类型。另外,你不应该在你的头文件中添加using namespace std;,我会阻止你一般使用它,这个前一个帖子Why is 'using namespace std;' considered a bad practice in C++?就是为什么。