es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Instanciar un objeto y pasar su nombre al constructor utilizando una macro de C++.

Digamos que
cpp
class A {
A(string name) {
//....
}
}

Entonces, cuando se crea el objeto:
cpp
A* objectNumber324 = new A("objectNumber324");
A* objectNumber325 = new A("objectNumber325");

En mi caso, como los nombres de los objetos son bastante largos, busco una macro para simplificar ese código a:
cpp
CreateA(objectNumber325);

Hay alguna discusión sobre cómo pasar el nombre de una variable a una función aquí. Pero eso no es exactamente lo que quiero, ya que quiero crear el objeto y pasar su nombre al constructor.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no es posible pasar el nombre del objeto como argumento al constructor de la clase. Los nombres de los objetos se utilizan principalmente para fines de identificación y nomenclatura dentro del código y no se pueden manipular durante la ejecución.

    Sin embargo, puede utilizar una macro para simplificar la creación de objetos encapsulando la llamada al constructor y reduciendo la cantidad de código requerido. Aquí hay un ejemplo de cómo puede definir una macro para crear objetos de la clase A:

    #define CrearA(nombre) A* nombre = new A(#nombre);
    

    Esta macro toma un identificador como argumento y crea un nuevo objeto de la clase A con el identificador como su nombre. El operador # convierte el identificador en una cadena literal que luego se pasa como argumento al constructor de A.

    Luego puede usar esta macro para crear objetos de esta manera:

    CrearA(numeroDeObjeto324)
    CrearA(numeroDeObjeto325)
    

    Esto creará dos objetos de la clase A con los nombres “numeroDeObjeto324” y “numeroDeObjeto325”, respectivamente.

Comments are closed.