Qual é a redefinição da classe em C ++ e como consertar?

Qual é a redefinição da classe em C ++ e como consertar?

Quando um programador tenta definir uma classe com o mesmo nome que já existe, é conhecido como “Redefinição da classe”. O programa pode se comportar inesperadamente como resultado disso, pois não ficará claro qual classe está sendo chamada, o que pode causar problemas de compilação.

Causas de redefinição de erros de classes

Para garantir que o software funcione sem falha, é crucial compreender o que desencadeia redefinições de classe e como resolvê -las.

1: A mesma classe definiu mais de uma vez

Quando uma classe é declarada mais de uma vez em um arquivo de origem ou arquivo de cabeçalho, ela deve ser redefinida. Várias definições da mesma classe resultam disso, dificultando o compilador para escolher qual definição usar. Ao tentar vincular arquivos de objeto, isso pode levar a problemas de compilação como “Símbolo duplicado” ou erros de ligação.

2: redefinir a mesma classe com comandos e valores semelhantes

Como os programadores normalmente redefinem a mesma classe com comandos e valores semelhantes, o redefinindo da classe O erro C ++ ocorre. Como resultado, o sistema não pode distinguir entre os dois scripts, levando à redefinição de variáveis ​​em inúmeras linhas de código C ++.

3: Construindo uma aula em vários arquivos

Além disso, os desenvolvedores podem ter problemas de redefinição de classe ao criar uma aula em vários arquivos, o que pode resultar em alguns erros de atividades repetidas. Por exemplo, como o sistema reconhece suas modificações, o prompt de C ++ para o construtor de redefinição deve conter valores e tags distintos.

Vamos nos aprofundar na redefinição de erros de classe em um programa C ++, que é mostrado abaixo:

#incluir
usando namespace std;
classe Class1
público:
int dados;
void func ()
cout << "Hello from Func!" << endl;

;
classe Class1
público:
int dados;
void func ()
cout << "Hello again from Func!" << endl;

;
int main ()
Classe 1 OBJ;
obj.Dados = 50;
obj.Func ();
retornar 0;

No código acima, recebemos o erro 'Redefinição da classe Class1'. De acordo com esta mensagem de erro, estamos tentando redefinir a classe Classe 1 Usando o mesmo nome, a mesma coleção de membros de dados e o mesmo conjunto de funções de membro.

Saída

Para superar a redefinição da classe em C ++, você deve remover uma classe com o mesmo nome ou dar outro nome.

Código corrigido

Aqui, removemos a classe com o mesmo nome para obter a saída desejada no console.

#incluir
usando namespace std;
classe Class1
público:
int dados;
void func ()
cout << "Hello from Func!" << endl;

;
int main ()
Classe 1 OBJ;
obj.Dados = 50;
obj.Func ();
retornar 0;

A classe Classe 1 é definido pelo código, que também inclui a função de membro func e dados (). O programa cria um objeto do tipo Class1, define o valor de dados e chama o método func ().

Saída

Como corrigir o erro de 'redefinição de classe'

Para consertar o Redefinição da classe Em C ++, algumas abordagens podem ser usadas.

1: Identifique onde a classe está sendo redefinida

Encontrar as áreas em que a classe está sendo redefinida é a primeira etapa. Para fazer isso, procure o nome da classe no código do programa. O programador pode escolher como resolver o problema assim que a localização do problema for determinada. Renomear a classe com um sufixo ou prefixo distinto é uma abordagem do problema. Outra opção é combinar as duas classes em uma única classe que possui um único nome e incorpora todos os recursos das duas classes originais.

2: Faça alterações no código do programa

O programador deve alterar o código do programa para aplicar o remédio. Isso pode implicar renomear a classe, atualizar qualquer referência ao programa à classe e substituindo qualquer código exclusivo da classe original. O software deve ser testado assim que as modificações forem feitas para garantir que funcione corretamente.

3: Use guardas de cabeçalho

Usar guardas de cabeçalho é outro método preferido para impedir que os arquivos de cabeçalho sejam incluídos mais de uma vez em um único arquivo ou aplicativo. Os guardas de cabeçalho são diretivas de pré -processador que garantem que o arquivo de cabeçalho esteja incluído apenas uma vez, por mais frequentemente que apareça no código -fonte.

4: Use a palavra -chave externa

Outra estratégia é declarar a classe em um arquivo de cabeçalho e defini -lo em um único arquivo de origem usando a palavra -chave externa. Como resultado, a redefinição de erros é evitada porque há apenas uma definição da classe.

5: Usando namespaces

Usar namespaces é outra solução para o redefinindo da classe erro em c++. O uso de namespaces permite que os programadores unificem classes e métodos semelhantes em um único nome. Ao fazer isso, os conflitos de nome são reduzidos e a classe certa é chamada. O programador pode evitar conflitos de nome declarando cada classe em um espaço de nome exclusivo.

Conclusão

O Redefinição de uma classe Na programação C ++ é um erro frequente que pode ser facilmente evitado pela identificação da classe, fazendo alterações no código, utilizando guardas de cabeçalho, palavra -chave externa e namespaces. Essas abordagens ajudam a garantir que a classe tenha uma única definição, evitando problemas de compilação e vinculação.