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