Sintaxe
A mensagem de erro do nosso erro é a seguinte:
Erro: não pode declarar a variável "como do tipo abstrato"Observe que, nos parênteses vazios, haverá nomes de classe variáveis e abstratos.
Erro C2259: 'Estado': Não é possível instanciar a classe abstrataEsta é outra mensagem que recebemos do compilador quando encontramos tal erro.
Exemplo # 01:
Para tornar esse erro compreensível, realizaremos um exemplo no qual escreveremos nosso código de tal maneira que recebemos um erro. Para esse fim, inicializamos uma aula com o nome "ShapeClass". Para tornar este resumo da classe, declaramos uma função virtual com o nome "getarea". Declaramos duas outras funções também com os nomes "Setwidth" e "sethight", respectivamente. O que queremos fazer aqui é que queremos obter altura como parâmetro e largura como um parâmetro de entrada. Estaremos calculando a área com a ajuda de nossos parâmetros de entrada. Criamos uma instância de nossa classe no método principal. Com a ajuda desse objeto, chamamos os métodos e passaremos os parâmetros de entrada através desses métodos. Depois disso, imprimimos nossa saída para verificar os resultados.
#incluirO sistema nos deu um erro após a execução do nosso código. A mensagem de erro diz que não podemos declarar variável 'sh' como do tipo abstrato 'shapeClass'. Agora, o compilador está tentando transmitir que 'shapeClass' é um tipo abstrato e não podemos declarar sua variável. Portanto, com a mensagem, podemos entender claramente que o compilador não está nos deixando instanciar nossa classe abstrata e é por isso que o sistema está nos dando o erro.
Para resolver o erro, declaramos outra classe 'retângulo'. Esta classe será a classe infantil de nossa classe abstrata e declararemos o corpo de nossa função virtual nesta classe. Depois disso, criaremos seu objeto no método principal e com a ajuda de seu objeto, chamaremos as funções.
Após as emendas, fizemos nosso código e agora conseguimos executar nosso código. O sistema executou nosso código sem dar erros. Podemos ver na saída que o sistema calculou a área de um retângulo e imprimiu a saída. Aprendemos que nosso erro foi que estávamos chamando diretamente o objeto de nossa classe abstrata, que era a abordagem errada. Quando chamamos o objeto de sua classe infantil, nosso código começou a funcionar bem.
Exemplo # 02:
Neste exemplo, não faremos nenhum cálculo matemático. Este exemplo é um exemplo genérico que nos ajudará a entender as classes abstratas e como o compilador é executado entre os métodos e as classes enquanto executa o código. Nesta classe, criamos uma classe abstrata e a chamamos de "Absclass". Declaramos outra classe “Classe Child”, mas esta não é uma classe abstrata. Esta classe é derivada de nossa classe abstrata.
Imprimimos “Valor passado usando objeto” em um método declarado na classe abstrata. O nome da função é "valuefunc". Como discutimos, o corpo da função virtual é declarado na classe infantil. Em nossa classe infantil, imprimimos “na função virtual” em nosso corpo de função virtual. Agora, passaremos um valor para a nossa função de valor e veremos se o valor alcançado está correto. Em nosso método principal, criamos uma instância de nossa classe abstrata e, com a ajuda da instância, chamaremos nossas funções virtuais e outras. Agora, vamos executar nosso código.
#incluirApós a execução do nosso código, receberemos um erro. Este erro é basicamente que não podemos instanciar uma classe abstrata que estamos tentando fazer aqui em nosso método principal. Uma coisa a observar aqui é que a variável e o tipo abstrato em nossa mensagem foram alterados.
Agora, tentaremos remover nosso erro e executar nosso código. Para esse fim, criaremos o objeto de nossa classe infantil e faremos sua instância. Com a ajuda dessa instância, chamaremos o virtual e outro método em nossa classe abstrata. Também será observado se podemos acessar a função virtual usando a classe infantil ou não. Se tivermos sucesso em fazê -lo, podemos dizer que acessamos a classe abstrata usando sua classe derivada.
Após a execução do nosso código, o compilador não lançou nenhum erro desta vez. Em vez disso, o sistema compilou nosso código com sucesso e nos deu a saída. Agora, vamos dar uma olhada na saída. O sistema imprimiu “Valor passado usando objeto” e “5” contra ele. Porque passamos 5 usando nossa instância no método principal. Depois disso, ele imprimiu a linha que pedimos em nossa função virtual.
Conclusão
Neste guia, discutimos erros críticos que os programadores encontram ao codificar e praticar conceitos orientados a objetos. Esses tipos de erros geralmente ocorrem quando um programador está lidando com classes abstratas. Todo o artigo resume que classes abstratas não podem ser instantadas e não podemos fazer seus objetos chamam métodos nele. Também tentamos exemplos diferentes para criar erros e depois resolvemos os erros em nosso código.