Sintaxis
El mensaje de error de nuestro error es el siguiente:
Error: no puede declarar que la variable "sea de tipo abstracto"Tenga en cuenta que en paréntesis vacío, habrá nombres de clases variables y abstractas.
Error C2259: 'Estado': no puede instanciar la clase abstractaEste es otro mensaje que recibimos del compilador cuando encontramos tal error.
Ejemplo # 01:
Para que este error sea comprensible, realizaremos un ejemplo en el que escribiremos nuestro código de tal manera que recibamos un error. Para ese propósito, hemos inicializado una clase con el nombre "Shapeclass". Para hacer que esta clase resumida, hemos declarado una función virtual en ella con el nombre "GetArea". Hemos declarado otras dos funciones también con los nombres "setwidth" y "setheight" respectivamente. Lo que queremos hacer aquí es que queremos obtener la altura como parámetro y ancho como parámetro de entrada. Calcularemos el área con la ayuda de nuestros parámetros de entrada. Creamos una instancia de nuestra clase en el método principal. Con la ayuda de ese objeto, hemos llamado los métodos y pasaremos los parámetros de entrada a través de esos métodos. Después de eso, imprimimos nuestra salida para verificar los resultados.
#incluirEl sistema nos dio un error después de la ejecución de nuestro código. El mensaje de error dice que no podemos declarar que 'sh' variable sea de tipo abstracto 'shapeClass'. Ahora, el compilador está tratando de transmitir que 'Shapeclass' es un tipo abstracto y no podemos declarar su variable. Entonces, con el mensaje, podemos entender claramente que el compilador no nos permite instanciar nuestra clase abstracta, por eso el sistema nos está dando el error.
Para resolver el error, declaramos otra clase 'rectángulo'. Esta clase será la clase infantil de nuestra clase abstracta y declararemos el cuerpo de nuestra función virtual en esta clase. Después de eso, crearemos su objeto en el método principal y con la ayuda de su objeto, llamaremos a las funciones.
Después de las enmiendas, hicimos nuestro código y ahora hemos tenido éxito en ejecutar nuestro código. El sistema ha ejecutado nuestro código sin dar errores. Podemos ver en la salida que el sistema ha calculado el área de un rectángulo e imprimido la salida. Hemos aprendido que nuestro error fue que estábamos llamando directamente el objeto de nuestra clase abstracta, que era el enfoque incorrecto. Cuando llamamos al objeto de su clase infantil, nuestro código comenzó a funcionar bien.
Ejemplo # 02:
En este ejemplo, no haremos ningún cálculo matemático. Este ejemplo es un ejemplo genérico que nos ayudará a comprender las clases abstractas y cómo se ejecuta el compilador entre los métodos y las clases al ejecutar el código. En esta clase, hemos creado una clase abstracta y la hemos llamado "Absclass". Hemos declarado otra clase de "clase infantil", pero esta no es una clase abstracta. Esta clase se deriva de nuestra clase abstracta.
Hemos impreso "valor aprobado usando objeto" en un método declarado en la clase abstracta. El nombre de la función es "valuefunc". Como discutimos, el cuerpo de la función virtual se declara en la clase infantil. En nuestra clase infantil, hemos impreso "en función virtual" en nuestro cuerpo de función virtual. Ahora, pasaremos un valor a nuestra función de valor y veremos si el valor alcanzado es correcto. En nuestro método principal, hemos creado una instancia de nuestra clase abstracta y con la ayuda de la instancia, llamaremos a nuestras funciones virtuales y otras. Ahora, ejecutaremos nuestro código.
#incluirDespués de la ejecución de nuestro código, recibiremos un error. Este error es básicamente que no podemos instanciar una clase abstracta que estamos tratando de hacer aquí en nuestro método principal. Una cosa a tener en cuenta aquí es que el tipo variable y abstracto en nuestro mensaje se ha cambiado.
Ahora, intentaremos eliminar nuestro error y ejecutar nuestro código. Para ese propósito, crearemos el objeto de nuestra clase infantil y haremos su instancia. Con la ayuda de esa instancia, llamaremos tanto al virtual como al otro método en nuestra clase abstracta. También se observará si podemos acceder a la función virtual usando la clase infantil o no. Si tenemos éxito en hacerlo, podemos decir que hemos accedido a la clase abstracta utilizando su clase derivada.
Tras la ejecución de nuestro código, el compilador no ha lanzado ningún error esta vez. En cambio, el sistema ha compilado nuestro código con éxito y nos ha dado la salida. Ahora, echemos un vistazo a la salida. El sistema ha impreso "valor pasado usando objeto" y "5" contra él. Porque pasamos 5 usando nuestra instancia en el método principal. Después de eso, imprimió la línea que le pedimos en nuestra función virtual.
Conclusión
En esta guía, discutimos los errores críticos que los programadores encuentran mientras codifican y practican conceptos orientados a objetos. Estos tipos de errores a menudo ocurren cuando un programador se ocupa de clases abstractas. Todo el artículo resume que las clases abstractas no pueden ser instanciadas, y no podemos hacer que sus objetos llamen métodos en él. También probamos diferentes ejemplos para crear errores y luego resolvimos los errores en nuestro código.