Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ljma en 21 Noviembre 2014, 10:29 am



Título: C++ Crear variables y objetos en tiempo de ejecución
Publicado por: ljma en 21 Noviembre 2014, 10:29 am
Hola,

¿Es posible crear variables u objetos en tiempo de ejecución?

Por ejemplo con los valores almacenados en el array

string sValores[2]={"uno","dos","tres"};

crear mediante un bucle tres variables con los nombres almacenados "uno" "dos" "tres".

Gracias anticipadas

Saludos



Título: Re: C++ Crear variables y objetos en tiempo de ejecución
Publicado por: avesudra en 21 Noviembre 2014, 10:42 am
No entiendo bien tu pregunta, si ya tienes definidas las cadenas en una variable ¿para qué quieres otras? , o quieres decir esto:
Código
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.    std::string sValores[3] = {"uno", "dos", "tres"};
  7.  
  8.    //Creamos las variables a partir de sValores
  9.    std::string cadenaUno  = sValores[0];
  10.    std::string cadenaDos  = sValores[1];
  11.    std::string cadenaTres = sValores[2];
  12.  
  13.    // O a un array constante de caracteres.
  14.    const char *cCadenaUno  = sValores[0].c_str();
  15.    const char *cCadenaDos  = sValores[1].c_str();
  16.    const char *cCadenaTres = sValores[2].c_str();
  17.  
  18.    std::cout << cadenaUno  << std::endl;
  19.    std::cout << cadenaDos  << std::endl;
  20.    std::cout << cadenaTres << std::endl;
  21.  
  22.    std::cout << cCadenaUno  << std::endl;
  23.    std::cout << cCadenaDos  << std::endl;
  24.    std::cout << cCadenaTres << std::endl;
  25.  
  26.    return EXIT_SUCCESS;
  27. }
O quizás te refieras a esto:
Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <string>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10.    string sValores[3] = {"uno", "dos", "tres"};
  11.    vector<string*> variablesNuevas;
  12.    //Creamos las variables a partir de sValores
  13.    for(int i = 0; i!= sizeof(sValores)/sizeof(string); ++i)
  14.    {
  15.        string * tmp = new string(sValores[i]);
  16.        variablesNuevas.push_back(tmp);
  17.    }
  18.  
  19.    for(vector<string*>::iterator it = variablesNuevas.begin(); it != variablesNuevas.end(); ++it)
  20.    {
  21.        cout << **it << endl;
  22.        // Liberamos memoria
  23.        delete *it;
  24.    }
  25.  
  26.    return EXIT_SUCCESS;
  27. }


Título: Re: C++ Crear variables y objetos en tiempo de ejecución
Publicado por: ljma en 21 Noviembre 2014, 13:11 pm
Hola,

 Gracias por responder.

Me refiero más bien a la segunda opción pero, aunque lo que pongo este mal, lo pongo para que se entienda:

//Creamos las variables a partir de sValores
   for(int i = 0; i!= sizeof(sValores)/sizeof(string); ++i)
   {
       string (sValores) ;
   }

Se crean tantas variables de tipo  string (o int ..) como elementos existan en el array que se llamarán de acuerdo con el valor del array o combinando un texto con el valor del array.

Espero haberme explicado.

Gracias anticipadas

Saludos


Título: Re: C++ Crear variables y objetos en tiempo de ejecución
Publicado por: Miky Gonzalez en 21 Noviembre 2014, 15:06 pm
Mira el uso de listas enlazadas y pilas. Puedes buscarlo en google.


Título: Re:
Publicado por: avesudra en 21 Noviembre 2014, 16:25 pm
Hombre lo de poner nombre a las variables no se si se puede hacer, creo que no, lo que si puedes hacer es ir declarando punteros y reservando memoria y guardando esos punteros en un vector que luego eliminas, en ese caso es el segundo codigo que te he puesto. Tambien puedes hacer lo que te comenta Miky.


Título: Re: C++ Crear variables y objetos en tiempo de ejecución
Publicado por: rir3760 en 21 Noviembre 2014, 16:39 pm
Se crean tantas variables de tipo  string (o int ..) como elementos existan en el array que se llamarán de acuerdo con el valor del array o combinando un texto con el valor del array.
Eso no es posible en C++, en su lugar puedes crear un objeto de la clase map (http://www.cplusplus.com/reference/map/map/) utilizando como clave el valor (texto, entero, etc.) que deseas.

Un saludo


Título: Re: C++ Crear variables y objetos en tiempo de ejecución
Publicado por: ljma en 22 Noviembre 2014, 23:18 pm
Muchas gracias a todos!!