C++ &引用;错误:在';之前应为类名;{&“x27;令牌”正在尝试继承

C++ &引用;错误:在';之前应为类名;{&“x27;令牌”正在尝试继承,c++,list,templates,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; templa

我试图创建一个从列表继承的队列,但出现以下错误:

"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
#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:
//
};
#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();
};
\ifndef cola\u herda\u lista
#定义可乐
#包括
#包括“列表水电站”
//#包括“诺多水电站”
使用名称空间std;
模板
类别:公共列表{
私人:
诺多*法国*决赛;
公众:
可乐();
布尔瓦西娅();
int longitud();//
空隙率(te);
void desencolar();//预先决定
T obtener_frente();//预先决定
~cola();
};
#恩迪夫
lista.hpp

#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
#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:
//
};
#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();
};
\ifndef列表模板
#定义lista_模板
#包括
#包括“诺多水电站”
使用名称空间std;
模板
lista类{
私人:
nodo*primero,*ultimo;
内坎蒂达德;
公众:
//
};
nodo.hpp

#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
#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:
//
};
#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();
};
#包括
#ifndef nodo_模板
#定义nodo_模板
使用名称空间std;
模板
野藤班{
私人:
T元素;
nodo*siguiente;
公众:
nodo();
我不明白;
无效集元素(te);
nodo*get_siguiente();
无效集_siguiente(nodo*sigui);
~nodo();
};

我已经花了好几个小时试图找出代码中什么是不适定的。帮助!

将代码更改为此

template <class T>
class cola : public lista<T>{
模板
类别:公共列表{

您需要调整可乐的声明:

template <class T>
class cola : public lista<T>
                         ^^^
模板
类别:公共列表
^^^

cola
是一个类模板,您需要指定类型。另外,您不应该将
使用名称空间std;
放在头文件中,我会劝阻您不要使用它。一般来说,前面的这篇文章会解释为什么。

它有效!我确信我以前尝试过。我想我一定是出了什么问题。谢谢。现在,我想一个l有点怀疑……在cola#u lista.cpp中,我已经评论了#include nodo.hpp这很好,对吗?自从lista.hpp之前被包含以来。是的,现在如果编译好了。谢谢!我已经评论了#include nodo.hpp这很好,对吗?自从lista.hpp之前被包含以来。@Geekne减少了不必要的包含是好的,但如果你有适当的include守卫,它会被删除看起来你是这样的,那就没关系了。