Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ISO C++ forbids declaration of `NodoListaStr' with no type

Estas en el tema de ISO C++ forbids declaration of `NodoListaStr' with no type en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/04/2010, 23:45
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
ISO C++ forbids declaration of `NodoListaStr' with no type

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
  1. #ifndef _COLASTR_H
  2. #define _COLASTR_H
  3.  
  4. #include <string>
  5. using std::string;
  6.  
  7. #include <sstream>          // Archivo de encabezados para flujos de caracteres.
  8. using std::ostringstream;   // Operadores de inserción de flujos.
  9.  
  10. #include "NodoListaStr.h"
  11.  
  12. //** Solo para PRUEBAS, borrar luego
  13. #include <iostream>
  14. using std::cout;
  15. using std::endl;
  16.  
  17. class ColaStr {
  18. public:
  19.     ColaStr();
  20.     virtual ~ColaStr();
  21.     void enqueue(const string &);
  22.     string dequeue ();
  23.     void imprimirCola(ostringstream &) const;
  24. private:
  25.     NodoListaStr *cabezaPtr;
  26. };
  27.  
  28. #endif  /* _COLASTR_H */

ColaStr.cpp

Código C++:
Ver original
  1. #include "ColaStr.h"
  2.  
  3. ColaStr::ColaStr()
  4. :cabezaPtr(0)
  5. {
  6. }
  7.  
  8. ColaStr::~ColaStr() {
  9.     NodoListaStr *ptrNodoActual = cabezaPtr;
  10.     NodoListaStr *ptrNodoTemp;
  11.     // Elimina todos los nodos de la lista, hasta que llegue al final de esta
  12.     while (ptrNodoActual != 0){
  13.         ptrNodoTemp = ptrNodoActual;
  14.         ptrNodoActual = ptrNodoActual -> proximoPtr;
  15.         cout << "Elimina Nodo de la cola: " << ptrNodoTemp -> datos << endl;
  16.         delete ptrNodoTemp;
  17.     }
  18.     cout << "Cola borrada" << endl;
  19. }
  20.  
  21. void ColaStr::enqueue(const string &valor){
  22.     NodoListaStr *ptrNodoActual = cabezaPtr;
  23.     if (ptrNodoActual == 0){
  24.         //cout << "Inserta nodo en la cabeza" << endl;
  25.         cabezaPtr = new NodoListaStr(valor);
  26.     }
  27.     else{
  28.         while (ptrNodoActual -> proximoPtr != 0){
  29.             ptrNodoActual = ptrNodoActual -> proximoPtr;
  30.         }
  31.         //cout << "Inserta nodo no se donde" << endl;
  32.         NodoListaStr *ptrNuevoNodo = new NodoListaStr(valor);
  33.         ptrNodoActual -> proximoPtr = ptrNuevoNodo;
  34.         //cout << ptrNodoActual -> proximoPtr -> datos;
  35.     }
  36. }
  37.  
  38. string ColaStr::dequeue (){
  39.     string valor = cabezaPtr -> datos;
  40.     NodoListaStr *ptrNodoTemp = cabezaPtr;
  41.     cabezaPtr = ptrNodoTemp -> proximoPtr;
  42.     return valor;
  43. }
  44.  
  45. void ColaStr::imprimirCola(ostringstream &recorrido) const{
  46.     NodoListaStr *ptrNodoActual = cabezaPtr;
  47.     while (ptrNodoActual != 0){
  48.         recorrido << " // " << ptrNodoActual -> datos;
  49.         ptrNodoActual = ptrNodoActual -> proximoPtr;
  50.     }
  51. }

NodoListaStr.h

Código C++:
Ver original
  1. #ifndef _NODOLISTASTR_H
  2. #define _NODOLISTASTR_H
  3.  
  4. #include <string>
  5. using std::string;
  6.  
  7. class NodoListaStr {
  8.     friend class ColaStr;
  9. public:
  10.     NodoListaStr(const string &);
  11.     virtual ~NodoListaStr();
  12.     string getDatos();            // Devuelve los datos del Nodo
  13.     NodoListaStr *proximoPtr;     // Puntero al proximo Nodo
  14. private:
  15.     string datos;
  16. };
  17.  
  18. #endif  /* _NODOLISTASTR_H */

NodoListaStr.cpp

Código C++:
Ver original
  1. #include "NodoListaStr.h"
  2.  
  3. NodoListaStr::NodoListaStr(const string &valor)
  4. :proximoPtr(0),
  5.  datos(valor)
  6. {
  7. }
  8.  
  9. NodoListaStr::~NodoListaStr() {
  10. }
  11.  
  12. // Devuelve una copia de los datos del nodo
  13. string NodoListaStr::getDatos()
  14. {
  15.     return datos;
  16. }

De antemano agradezco toda la ayuda prestada, muchas gracias
  #2 (permalink)  
Antiguo 04/04/2010, 05:41
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: ISO C++ forbids declaration of `NodoListaStr' with no type

No estoy seguro de esto, pero podrias intentar agregar, en ColaStr.h

class NodoListaStr;

justo antes de la definicion de la clase ColaStr.
  #3 (permalink)  
Antiguo 04/04/2010, 10:28
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ISO C++ forbids declaration of `NodoListaStr' with no type

Cita:
Iniciado por CalgaryCorpus Ver Mensaje
No estoy seguro de esto, pero podrias intentar agregar, en ColaStr.h

class NodoListaStr;

justo antes de la definicion de la clase ColaStr.
Hay cosas que me extrañan, he hecho varias clases y en ninguna habia tenido que hacer esto, pero lo importante es que FUNCIONO.

Gracias, gracias, gracias, ya despues me preocupare por ver que paso, pero por el momento, gracias

Etiquetas: iso, type
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:37.