Hola gente, llevo horas batallando tratando de buscar una solucion y no le encuentro,
Estoy utilizando NetBeans, con CYGWIN, al intentar compilar me dice este error:
------------------------------------------------------------------------------------------------
g++ -c -g -MMD -MP -MF build/Debug/Cygwin-Windows/src/controlador.o.d -o build/Debug/Cygwin-Windows/src/controlador.o src/controlador.cpp
In file included from src/controlador.cpp:29:
src/ColaStr.h:32: error: ISO C++ forbids declaration of `NodoListaStr' with no type
src/ColaStr.h:32: error: expected `;' before '*' token
------------------------------------------------------------------------------------------------
Los que estoy haciendo es una Cola. Esta cola cuenta con un tipo NodoListaStr, que aparentemente es la que esta donde problemas.
Adjunto el codigo fuente:
ColaStr.h
Código C++:
Ver original#ifndef _COLASTR_H
#define _COLASTR_H
#include <string>
using std::string;
#include <sstream> // Archivo de encabezados para flujos de caracteres.
using std::ostringstream; // Operadores de inserción de flujos.
#include "NodoListaStr.h"
//** Solo para PRUEBAS, borrar luego
#include <iostream>
using std::cout;
using std::endl;
class ColaStr {
public:
ColaStr();
virtual ~ColaStr();
void enqueue(const string &);
string dequeue ();
void imprimirCola(ostringstream &) const;
private:
NodoListaStr *cabezaPtr;
};
#endif /* _COLASTR_H */
ColaStr.cpp
Código C++:
Ver original#include "ColaStr.h"
ColaStr::ColaStr()
:cabezaPtr(0)
{
}
ColaStr::~ColaStr() {
NodoListaStr *ptrNodoActual = cabezaPtr;
NodoListaStr *ptrNodoTemp;
// Elimina todos los nodos de la lista, hasta que llegue al final de esta
while (ptrNodoActual != 0){
ptrNodoTemp = ptrNodoActual;
ptrNodoActual = ptrNodoActual -> proximoPtr;
cout << "Elimina Nodo de la cola: " << ptrNodoTemp -> datos << endl;
delete ptrNodoTemp;
}
cout << "Cola borrada" << endl;
}
void ColaStr::enqueue(const string &valor){
NodoListaStr *ptrNodoActual = cabezaPtr;
if (ptrNodoActual == 0){
//cout << "Inserta nodo en la cabeza" << endl;
cabezaPtr = new NodoListaStr(valor);
}
else{
while (ptrNodoActual -> proximoPtr != 0){
ptrNodoActual = ptrNodoActual -> proximoPtr;
}
//cout << "Inserta nodo no se donde" << endl;
NodoListaStr *ptrNuevoNodo = new NodoListaStr(valor);
ptrNodoActual -> proximoPtr = ptrNuevoNodo;
//cout << ptrNodoActual -> proximoPtr -> datos;
}
}
string ColaStr::dequeue (){
string valor = cabezaPtr -> datos;
NodoListaStr *ptrNodoTemp = cabezaPtr;
cabezaPtr = ptrNodoTemp -> proximoPtr;
return valor;
}
void ColaStr::imprimirCola(ostringstream &recorrido) const{
NodoListaStr *ptrNodoActual = cabezaPtr;
while (ptrNodoActual != 0){
recorrido << " // " << ptrNodoActual -> datos;
ptrNodoActual = ptrNodoActual -> proximoPtr;
}
}
NodoListaStr.h
Código C++:
Ver original#ifndef _NODOLISTASTR_H
#define _NODOLISTASTR_H
#include <string>
using std::string;
class NodoListaStr {
friend class ColaStr;
public:
NodoListaStr(const string &);
virtual ~NodoListaStr();
string getDatos(); // Devuelve los datos del Nodo
NodoListaStr *proximoPtr; // Puntero al proximo Nodo
private:
string datos;
};
#endif /* _NODOLISTASTR_H */
NodoListaStr.cpp
Código C++:
Ver original#include "NodoListaStr.h"
NodoListaStr::NodoListaStr(const string &valor)
:proximoPtr(0),
datos(valor)
{
}
NodoListaStr::~NodoListaStr() {
}
// Devuelve una copia de los datos del nodo
string NodoListaStr::getDatos()
{
return datos;
}
De antemano agradezco toda la ayuda prestada, muchas gracias