"error: expected class-name before '{' token"尝试继承

"error: expected class-name before '{' token" trying to inheritance

本文关键字:token 继承 error before expected class-name      更新时间:2023-10-16

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

"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();
};

我花了几个小时试图弄清楚代码中什么是病态的。的帮助!

把你的代码改成

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

您需要调整您的cola声明:

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

cola是一个类模板,您需要指定类型。此外,你不应该把using namespace std;在你的头文件,我会劝阻你使用它在一般情况下,这之前的线程为什么是"使用命名空间std;"被认为是一个坏的做法在c++ ?