Como asignar tiupo a muchas variables

Iniciado por CBFD, 8 Mayo 2016, 13:46 PM

0 Miembros y 3 Visitantes están viendo este tema.

CBFD

Hola a todos:

Soy nuevo en C++ y todavía muy torpe, vengo de otro lenguaje y estoy tratando de usar el máximo de código y de funciones que hacía en él, paso a explicar una de ellas:

Yo podía definir el nombre de una variable poniéndola en otra y precediéndola del símbolo &.

Por ejemplo:
{
   i = 1
   for( int a = 1; a < 1000; a = a + 1 )
   {
     var01 = "intvar"+str(a)
     int &var01
   }
}

Donde str() es una función que convierte un numero en caracteres para formar los nombres desde intvar0001 a intvar1000 e int &var01 lo que hacia era iniciar la variable de como se llamaba var01 en ese momento como int y así conseguía iniciar 1000 variables con un código pequeño.

Si alguien puede ayudarme muchas gracias.

Carlos

Maik33

¿Y no es más fácil crear un array o puntero para almacenar los datos?

int a[1000];
int i ;
for (i = 0; i < 1000; i++) {
     a[i] = 0;
}

CBFD

Hola y gracias por tu interés:

Lo que muestro es un ejemplo para hacerme entender lo que deseo es si existe una manera de hacer eso poner el símbolo & (u otro o de otra manera) delante de una variable y que lo que se cree, ejecute, inicialice sea lo que vale la variable y no la variable (intvar0001 en vez de var01) en C++ para reutilizar mucho código ya creado.

Un saludo

Carlos

ivancea96

Eso no lo podrás hacer ne C++ como dices. Aquí las variables las declaras con código, no hay maneras rápidas de ese tipo. Para esa clase de cosas, deben usarse arrays (en C++, y en cualquier otro lenguaje, no creo que ese método sea muy recomendable, puesto que si quieres crear tantas variables segudas, esas variables van a tener un uso parecido). Así que array.
Y como dato, en C++ poner & al declarar una variable genera un ""alias"".

MAFUS

¿Qué lenguaje es ese? en verdad quiero saberlo.

CBFD

Hola MAFUS y ivancea96:

Es Clipper con las librerías Fivewin y  harbour, y todas son librerías de c++ que se tienen compilar con borland de embarcadero.

Os repito lo de las 1000 variables es un ejemplo otro podría ser el uso de una base de datos:

Imaginemos que cada año tenemos que usa unos límites de cotización para aplicar a las nóminas y los tenemos en una base los del 2015 en "base2015" los de 2016 en "base2016". Si yo creo:
base = "base" + ejercicio

y luego

use &base

dependiendo de la variable "ejercicio" obtendremos los límites de 2015 o 2016.

O imaginemos que llamas a una función y dependiendo desde donde la llames vuelva a otra para continuar con un proceso:

void uno()
{
sitio = "CUATRO()"
tres()
}

void dos()
{
sitio = "CINCO()"
tres()
}

void tres()
{
run &sitio
}

Dependiendo de si viene de uno o de dos va a cuatro o cinco.

Un saludo

Carlos

MAFUS

Entiendo.
Vienes de un lenguaje que es dinámico donde una variable puede contener cualquier tipo de dato.
Deberás cambiar tu forma de pensar.
C/C++ son lenguajes estáticos, no sé si ahora C++ usa la palabra clave var en la que el propio lengauje puede adivinar que tipo otorgar al dato, lo que significa que de antemano debes saber qué tipo de dato guardará la variable.
Si tienes paciencia en tu estudio y llegas a punteros a void, y en C++ a las plantillas verás que hay un comportamiento algo parecido a lo que dices. Pero en verdad, en tiempo de diseño, deberás elegir que tipo deben ser tus variables.

CBFD

Hola MAFUS:

Yo en todo momento se que tipo son las variables.

Imaginate:

int var01;
int var02 = 1;
char[6] var03 = "var04";
int var04 = 4;

var01 = var02 + &var03;

y lo tendría que hacer es var01 = var02 + var04.

Un saludo

Carlos

MAFUS

No existe tal mecanismo en C.
Pero puedes usar punteros.

int var01;
int var02 = 1;
int *var03;
int var04 = 4;

var03 = &var04; /* No se podía hacer antes la asignación porque var04 no existía */

var01 = var02 + *var03;

CBFD

Gracias MAFUS por tus aclaraciones.