C++, clases y Visual Studio.

maRc

Estoy haciendo una práctica para la universidad en C++ con el VS. Y tengo un problema con su "forma" de manejar los objetos.

El problema está aquí:
http://pastebin.com/720556

Todo va perfecto, pero cuando llega a esa función, misteriosimágicamente me copia Modelo[0] en cada una de las posiciones del vector, por lo que todo se va a tomar por saco.

¿Alguien sabe que pasa? ¿Le ha pasado algo similar alguna vez?

Gracias.

r2d2rigo

No veo nada raro. Pero me parece que falla por la declaracion de Modelo, eso de juntar puntero y array... quiza por eso toma direcciones de memoria erroneas.

PD: Cielos, variables globales, las odio :P

LOc0

Yo tp veo nada raro a excepción de:

//Modelo está declarado así: static Modelo_c *Modelo[MAXIMO_MODELOS];

¿Esto es un array de punteros a objetos o por el contrario es un puntero a un array de objetos? (Quizás sean lo mismo, pero declarar un puntero a un array[] es como declarar un array bidimensional que creo que no necesitas y puede liarte la cosa)

Salu2 ;)

maRc

En principio es un vector de punteros a Modelo_c, y hasta ahora había funcionado.

Me acabo de dar cuenta de que es una tontería hacerlo así. En principio mi intención era que el usuario declarara tantos objetos como quisiera, pero luego lo he modificado para que solo haga MAXIMO_MODELO (un valor fijo). Así que directamente voy a declarar un vector de objetos, que es más lógico.

Ya veré como queda la cosa.

Gracias ;).

PD: Ya se que son variables globales, pero no se de que otra forma se puede hacer esto :)

Edit:

Nada, esto sigue igual :/

LOc0

static Modelo_c Modelo[MAXIMO_MODELOS];
void CallbackBarridoValor(int ID) {
if (AplicaTodos == 0) {
if (Modelo[ModeloActivo] != 0)
Modelo[ModeloActivo].CambiaPasos(BarridoPasos);
}
else {
for (int i = 0; i < MAXIMO_MODELOS; i++) {
if (Modelo != 0) {
Modelo.CambiaPasos(BarridoPasos);
}
}
}



¿Así lo tienes ahora? ¿Y no te va? Mmmm...

Salu2 ;)

maRc

Si, en lugar del Modelo != 0, que no tengo ganas de sobrecargar los operadores, controlo si está en uso o no (que es para lo que es esa comprobación), con un vector de enteros.

LOc0

Puff, con sólo esta información está jodido ver algo :(...

¿El problema es que Modelo[0] = Modelo[1] = Modelo[2] = Modelo[n]?

Salu2 ;)

maRc

Todo arreglado, fallo mío x).

PD: Y yo echándole las culpas al VS xD.

Usuarios habituales

  • maRc
  • LOc0
  • r2d2rigo