我尝试创建一个从列表继承的队列并得到此错误:
"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();
};
我已经花了好几个小时试图找出代码中出现什么问题。救命啊!
答案 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++?就是为什么。