Convierte una cadena en un nombre de variable o tipo de variable

¿Es posible convertir cadenas en variables (y viceversa) haciendo algo como:

makeVariable("int", "count"); 

o

 string fruit; cin >> fruit; // user inputs "apple" makeVariable(fruit, "a green round object"); 

y luego poder acceder simplemente haciendo algo como:

 cout << apple; //a green round object 

¡Gracias por adelantado!

No, esto no es posible Este tipo de funcionalidad es común en lenguajes de scripting como Ruby y Python, pero C ++ funciona de manera muy diferente. En C ++ tratamos de hacer todo el trabajo del progtwig que podamos en tiempo de comstackción . A veces podemos hacer cosas en tiempo de ejecución , e incluso entonces los buenos progtwigdores de C ++ encontrarán la manera de hacer el trabajo desde el momento de la comstackción.

Si sabe que va a crear una variable, créela de inmediato:

 int count; 

Lo que quizás no sepa de antemano es el valor de la variable, por lo que puede diferir eso para el tiempo de ejecución:

 std::cin >> count; 

Si sabe que va a necesitar una colección de variables, pero no precisamente cuántas de ellas, cree un mapa o un vector :

 std::vector counts; 

Recuerde que el nombre de una variable no es más que un nombre, una forma de referirse a la variable más adelante. En C ++ no es posible ni útil posponer la asignación del nombre de la variable en tiempo de ejecución. Todo lo que haría es hacer que su código sea más complicado y su progtwig más lento.

Puedes usar un mapa

 map numbers; numbers["count"] = 6; cout < < numbers["count"]; 

Es posible que desee mirar el mapa C ++ .

Los progtwigdores principiantes hacen esta pregunta con respecto a cada idioma. Hay un grupo de lenguajes de computadora para los cuales la respuesta a esta pregunta es “sí”. Estos son lenguajes dynamics e interactivos , como BASIC, Lisp, Ruby, Python. Pero piénselo: los nombres de las variables solo existen en el código, para comodidad del progtwigdor. Solo tiene sentido definir una nueva variable mientras el progtwig se ejecuta si hay una persona que luego escriba el nombre de la variable en el nuevo código. Esto es cierto para el entorno de lenguaje interactivo, y no es cierto para los lenguajes comstackdos como C ++ o Java. En C ++, para cuando se ejecuta el progtwig y se crea la nueva variable imaginaria, no hay nadie a mano para escribir el código que usaría esa nueva variable.

Lo que realmente quiere en su lugar es la capacidad de asociar un nombre con un objeto en tiempo de ejecución, para que el código, no las personas, pueda usar ese nombre para encontrar el objeto. Como ya han señalado otras personas, la función de map de la biblioteca estándar de C ++ te brinda esa capacidad.

No. C ++ está tipado estáticamente, y esto va en contra de todo ese paradigma.

He visto este tipo de funcionalidad implementada anteriormente almacenando variables en un mapa stl.

Al menos para el (viceversa) hay una posibilidad con el enunciado del preprocesador stringify # . Vea esta respuesta sobre cómo convertir un nombre de variable C ++ en una cadena.

Bueno, supongo que no puedes hacer variables dinámicas, pero puedes usar alguna función para escribir una nueva variable y su valor en cualquier archivo de texto externo y acceder a su valor desde ese archivo donde sea necesario (también puedes eliminar la variable dinámica quitándola del archivo de texto)

teoría: las variables son lugares en la memoria donde almacenamos datos, identificados por un nombre, podemos almacenar datos en un archivo de texto si el procesador no nos permite almacenarlo en registros, y podemos acceder a su valor buscando su identidad (nombre de la variable) ) En el archivo de texto, nuestros datos estarán al lado de él.

es solo una idea, debería funcionar, pero supongo que no será muy simple y tu progtwig tendrá que pagar en términos de velocidad.