elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  "Arrays de clases, pasados como argumento a una funcion"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: "Arrays de clases, pasados como argumento a una funcion"  (Leído 2,675 veces)
Sauruxum

Desconectado Desconectado

Mensajes: 117


Ver Perfil WWW
"Arrays de clases, pasados como argumento a una funcion"
« en: 27 Octubre 2010, 21:12 pm »

Buenas.

Haciendo un programita, para cojer practica me tope con una dificultad, mas bien no entiendo cual debe ser la sintaxis que debo usar.
Al grano.

Tengo una clase "soldaditos", a los soldaditos los inicializo con numero de matricula y rango militar xD.

Código:
class soldadito{
  private:
    int matricula, rango;
  public:
    soldadito ( int a, int b ){
      a=matricula;
      b=rango;
    };
};

Ahora, como quiero tener un ejercito de soldaditos hago un array de soldaditos:

Código:
   soldadito *soldado[100];

  ...
  ...

//Todos son reclutas ( rango 1 xD )
  for (i=0; i<100; i++ ){
    soldado[i]= new soldadito( i, 1 )
  }


Ahora mi duda es, teniendo las cosas asi como estan, como hago a pasar el array soldado[100] o digamos en su defecto soldados[EJERCITO] ( con EJERCITO una constante ya definida ) como argumento de alguna funcion?
La cosa es que me hago bola con los punteros y no comprendo como debo pasarlos con los arrays.
Sin los arrays lo hubiera hecho:

Código:
void ( soldadito& s )

Pero con el array me complico.
Espero haber hecho clara la pregunta.

Saludos.

p.d. los personajes usados son ficticios, cualquier relacion con la realidad es pura coincidencia...


En línea

carlitos_jajajajaja

Desconectado Desconectado

Mensajes: 30


Ver Perfil
Re: "Arrays de clases, pasados como argumento a una funcion"
« Respuesta #1 en: 28 Octubre 2010, 04:15 am »

No estoy de acuerdo con la guerra pero te voy a ayudar igual LOL


Cuando tu creas un array en realidad lo que estas haciendo no es nada mas q usar un puntero constante :p

y como el puntero almacena las direcciones de los objetos, simplemente tienes que pasar el array por valor y funcionara perfecto en otras palabras:
Código
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. class soldadito{
  7.  public://Modificado pa q mi ejemplo funcione :)
  8.    int matricula, rango;
  9.  public:
  10.    soldadito ( int a, int b ){
  11.      a=matricula;
  12.      b=rango;
  13.    };
  14. };
  15.  
  16. void promover_al_primero(soldadito* division[]) //osea un array de punteros a soldadito
  17. {
  18.     division[0]->rango = 2;
  19. }
  20.  
  21.  
  22. int main()
  23. {
  24.     soldadito *soldado[100];
  25.  
  26. //  ...
  27.  //...
  28.  
  29. //Todos son reclutas ( rango 1 xD )
  30.  for (int i=0; i<100; i++ ){
  31.    soldado[i]= new soldadito( i, 1 );
  32.  }
  33.  
  34.  promover_al_primero(soldado);
  35.  
  36.  cout << "El rango del primer soldado es: " << soldado[0]->rango << endl;
  37.  
  38. }
  39.  
  40.  

Una aclaracion, para acceder a un miembro de clase se usa el punto (soldadito.rango etc) pero cuando es un puntero a soldadito no se usa punto, sino flechita XD  soldadito->rango

Sitienes alguna pregunta hazla a alguien mas pq no visito este foro muy seguido jajajaja


PS: Trata de leer sobre punteros, es muy importante q tengas buena base en eso si quieres adentrar en programacion c/c++


En línea

Merodeo los foros, esperando el momento de decir algo inteligente...

Se necesita paciencia
Sauruxum

Desconectado Desconectado

Mensajes: 117


Ver Perfil WWW
Re: "Arrays de clases, pasados como argumento a una funcion"
« Respuesta #2 en: 28 Octubre 2010, 06:21 am »

Bueno, digamos que una buena base de punteros la tengo, solo que me hice bola por el mismo hecho que el array puede ser un puntero al primer miembro, la clase la declare como puntero y para modificar las variables dentro de la funcion debo pasar un valor por referencia  ;-)
Pero siempre que hago estas preguntas me quedo amargo cuando veo que la solucion no era dificil xD
Muchas gracias

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines