Que estoy haciendo mal arreglo? (Solucionado)

Iniciado por nolasco281, 4 Febrero 2014, 01:58 AM

0 Miembros y 1 Visitante están viendo este tema.

nolasco281

Hola como estan.

Como pueden ver estoy declarando esas variables globales.
no se que estoy haciendo mal

perdon se me escapaba explicar esa variable las declaro como glovales en camion.h pero en el archivo de implemetacion a la hora se ser usadas me da ese error

si lo ejecuto en la principal no hay problema.



y en la funcion de camion.cpp tengo esto

Código (cpp) [Seleccionar]
void Camion::ingresarCamion()
{
  if (cantidadDeCamiones < Maximo)
  {
    //Código de las entradas por teclado que capturaran lista de camiones
    cout << "Ingrese los datos del camion\n";
    cout << "Ingrese el ID del camion: ";
    cin  >> idCamion;
   
    cout << "Ingrese la Marca del Camion: ";
    cin  >> marcaCamion;
   
listaDeCamiones[cantidadDeCamiones] = new Camion(idCamion, cilindrajeCamion,
                                                     nPuertasCamion, anioCamion,
                                                     precioCamion, marcaCamion,
                                                     modeloCamion,colorCamion);
    cantidadDeCamiones++;
   
    cout << "Los datos del camion fueron ingresados correctamente\n\n";
  }
  else
  {
      system("cls");
      cout << "Ya no hay espacio disponible para mas camiones\n\n";
  }


el invalid types <unknown type> me imagino que hace referencia a  listaDeCamiones[cantidadDeCamiones]

Lo que se puede imaginar... se puede programar.

x64core

¿Son esas sentencias escritas dentro de alguna funcion?

nolasco281

No son variables dentro del archivo de encabezado (.h) las cuales según yo pretendo llamar en camion.cpp ya que las declaro como globales
Lo que se puede imaginar... se puede programar.

nolasco281

Cita de: x64Core en  4 Febrero 2014, 02:07 AM
¿Son esas sentencias escritas dentro de alguna funcion?

ya te entendi si exactamente.
Lo que se puede imaginar... se puede programar.

x64core

#4
Cita de: nolasco281 en  4 Febrero 2014, 02:11 AM
No son variables dentro del archivo de encabezado (.h) las cuales según yo pretendo llamar en camion.cpp ya que las declaro como globales
-
Publica el código.

nolasco281

#5
si tienes razon ya ratos me di cuenta de que si lo hacia dentro de la funcion no da error
tienes toda la razon

pero al crear otra funcion que me muestre los datos del camion; que se guardaron en memoria como los saco para mostrarlos en otra funcion.

Código (cpp) [Seleccionar]
void Camion::ingresarCamion()
   {
      const int Maximo = 100;
      Camion**listaDeCamiones = new Camion*[Maximo];// arreglo de 100
      int cantidadDeCamiones=0;// controla la cantidad de camiones

     if (cantidadDeCamiones < Maximo)
     {
       //Código de las entradas por teclado que capturaran lista de camiones
       cout << "Ingrese los datos del camion\n";
       cout << "Ingrese el ID del camion: ";
       cin  >> idCamion;
   
       cout << "Ingrese la Marca del Camion: ";
       cin  >> marcaCamion;
   
   listaDeCamiones[cantidadDeCamiones] = new Camion(idCamion, cilindrajeCamion,
                                                        nPuertasCamion, anioCamion,
                                                        precioCamion, marcaCamion,
                                                        modeloCamion,colorCamion);
       cantidadDeCamiones++;
   
       cout << "Los datos del camion fueron ingresados correctamente\n\n";
     }
     else
     {
         system("cls");
         cout << "Ya no hay espacio disponible para mas camiones\n\n";
     }



ya que cantidadDeCamiones quedara en la otra funcion al igual que lista de camiones.

Código (cpp) [Seleccionar]
void Camion::listaDeCamiones()
{
if (cantidadDeCamiones==0)
             {
               system("cls");
               cout<<"No se a registrado ninguna Camion todavía"<<endl;
             }
             else
             {
                 cout<<"..:::Lista de Camiones:::.."<<endl<<endl;
                 cout<<setw(10)<<"idCamion"<<endl;
                 cout<<"================================================="<<endl;
                 
                 //Imprimmir todas los camiones almacenadas en el arreglo de camiones
                 for (int i=0; i<cantidadDeCamiones;i++)
                 {
                     listaDeCamiones[i]->print();
                 }
                 cout<<endl<<"*******Fin de la lista **********"<<endl<<endl;
             }

}


esas variables serian declaradas dentro de la funcion
Lo que se puede imaginar... se puede programar.

x64core

Declaralas globales y las inicializas/creas memoria dinamica en alguna funcion.

nolasco281

Cita de: x64Core en  4 Febrero 2014, 02:44 AM
Declaralas globales y las inicializas/creas memoria dinamica en alguna funcion.

Me Disculpo no soy muy bueno pero las declaro en la de encabezado o en la de implementación? y cuales variables debo de inicializar y como. No pido código para nada solo una idea. Gracias de antemano.
Lo que se puede imaginar... se puede programar.

x64core

Cita de: nolasco281 en  4 Febrero 2014, 02:48 AM
Me Disculpo no soy muy bueno pero las declaro en la de encabezado o en la de implementación? y cuales variables debo de inicializar y como. No pido código para nada solo una idea. Gracias de antemano.
Generalemente se definen en un .cpp/.c/... y se declaran con extern en un .h.
Declara las variables como globales las que necesites en multiples funciones luego sólo se usan en las funciones.

nolasco281

#9
//entonce quedaria asi la camion.cpp

Código (cpp) [Seleccionar]
#include "Camion.h"
#include <iostream>
using namespace std;
   
    extern const int Maximo =100;
    extern Camion**listaDeCamiones = new Camion*[Maximo];// arreglo de 100
    extern int cantidadDeCamiones =0;// controla la cantidad de camiones


y en la .h
Código (cpp) [Seleccionar]
#ifndef CAMION_H
#define CAMION_H
#include <iostream>
using namespace std;

int Maximo;
Camion**listaDeCamiones = new Camion*[Maximo];
int cantidadDeCamiones;

Lo que se puede imaginar... se puede programar.