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守卫,它会被删除看起来你是这样的,那就没关系了。