Test Foro de elhacker.net SMF 2.1

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 (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>

int main(int argc, char *argv[])
{
   std::string sValores[3] = {"uno", "dos", "tres"};

   //Creamos las variables a partir de sValores
   std::string cadenaUno  = sValores[0];
   std::string cadenaDos  = sValores[1];
   std::string cadenaTres = sValores[2];

   // O a un array constante de caracteres.
   const char *cCadenaUno  = sValores[0].c_str();
   const char *cCadenaDos  = sValores[1].c_str();
   const char *cCadenaTres = sValores[2].c_str();

   std::cout << cadenaUno  << std::endl;
   std::cout << cadenaDos  << std::endl;
   std::cout << cadenaTres << std::endl;

   std::cout << cCadenaUno  << std::endl;
   std::cout << cCadenaDos  << std::endl;
   std::cout << cCadenaTres << std::endl;
   
   return EXIT_SUCCESS;
}

O quizás te refieras a esto:
Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
#include <string>
#include <vector>

using namespace std;

int main(int argc, char *argv[])
{
    string sValores[3] = {"uno", "dos", "tres"};
    vector<string*> variablesNuevas;
    //Creamos las variables a partir de sValores
    for(int i = 0; i!= sizeof(sValores)/sizeof(string); ++i)
    {
        string * tmp = new string(sValores[i]);
        variablesNuevas.push_back(tmp);
    }

    for(vector<string*>::iterator it = variablesNuevas.begin(); it != variablesNuevas.end(); ++it)
    {
        cout << **it << endl;
        // Liberamos memoria
        delete *it;
    }

    return EXIT_SUCCESS;
}
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
Cita de: ljma en 21 Noviembre 2014, 13:11 PMSe 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!!