Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - anon77

#1
Programación C/C++ / Re: Ayuda con c++
4 Mayo 2011, 23:29 PM
Solucionado! Era lo que tú decías. Muchas gracias Acermax
#2
Programación C/C++ / Re: Ayuda con c++
3 Mayo 2011, 15:53 PM
El error de compilación me da en el menú, que es el que he puesto antes, en esta línea:
else if (opcion==2){ cin>>pos; cout<< a[pos];<<endl;}
Y el mensaje que me pone exactamente es este:
Error: 'a' was not declared in this scope
#3
Programación C/C++ / Re: Ayuda con c++
2 Mayo 2011, 22:30 PM
Gracias por contestar otra vez Acermax. Lo de IArray es una cosa que se me ha colado de otro lado, ya lo he modificado.

A ver, el operador [] lo he hecho así:
int& Vector::operator[](int i)
{
  return data[ i ];
}
Con esto podría acceder en un principio de la forma a[4] por ejemplo.
Luego he implementado aparte un sencillo menu de este estilo:
scanf(&opcion);
while (opcion!=3){
  if (opcion==1) Vector a(sz);   //cogiendo con cin sz y tal
  else if (opcion==2){ cin>>pos; cout<< a[pos];}
  scanf(&opcion);
}
De esa forma cuando le meto un 1 me crearía el vector y con la opción 2 me mostraría el valor de las posición pos. Mi problema es que ahí me pone que a no está definido.
Espero que sea lo que me estabas pidiendo. Gracias otra vez
#4
Programación C/C++ / Re: Ayuda con c++
2 Mayo 2011, 18:56 PM
Cita de: Acermax en  2 Mayo 2011, 18:47 PM
No sé si entiendo muy bien lo que pides, pero si es que te imprima el valor del vector de la posicion "posicion" sería en ese caso a[posicion], utilizando el operador [] que es para eso.

Obviamente, suponiendo que tienes bien hecho tu el operador [] con la "trampa" para cambiar la posición según el indice mínimo que le tengas puesto.

Sí sí, es a eso a lo que me refiero. El operador [] lo tengo implementado para que funcione así y en un principio había puesto a[posicion] tal y como tú dices pero a la hora de compilarlo me ponía que a no estaba declarado.
Posiblemente será un error tonto pero repito que soy novato con c++ y aún me cuesta entenderlo  ;)
#5
Programación C/C++ / Ayuda con c++
2 Mayo 2011, 17:59 PM
Hola,
soy novato con c++ y uno de los primeros trabajos que tengo que hacer es realizar un vector con un índice inferior y otro superior o bien de un determinado tamaño.
Para ello tengo la clase Vector definida de esta forma:
class Vector
{
private:
  int indice_min, indice_max;
   int *data;
  // funciones
public:
 Vector(int size);            //Constructores
 Vector(int indMin,int indMax);
 ~Vector();                    //Destructor
 int& operator[](int i)
 //funciones
}

Pues bien, mi problema viene cuando utilizo el menú. Os pongo un pequeño fragmento de como sería:
if (opcion==1){
  cout<<"Size: "; cin>>sz; Vector a(sz);
  cout<< "Vector de tamaño"<<sz<<"creado"<<endl;
}
else if (opcion==2){
  cout<<"Posicion:";
  cin>>posicion;
  cout<<"Valor devuelto"<<?????????
}

Pues bien, mi duda viene en la opción 2, cuando quiero que me escriba por pantalla el valor que hay en las posicion seleccionada, que no sé exactamente que tendría que escribir donde están los interrogantes.

Y una pequeña duda más. He leído que los destructores son llamados automáticamente por el compilador. ¿Hay alguna forma de controlar ésto? Porque lo que me suele pasar es que le doy a la opción de crear vector y me aparece escrito por pantalla "vector creado" y seguido "vector borrado". Es decir, me llama al destructor justo después.

Muchas gracias de antemano