Quelle est la redéfinition de la classe en C ++ et comment le réparer?

Quelle est la redéfinition de la classe en C ++ et comment le réparer?

Lorsqu'un programmeur essaie de définir une classe avec le même nom que celle qui existe déjà, elle est connue sous le nom «Redéfinition de la classe». Le programme peut se comporter de façon inattendue à la suite de cela, car il ne sera pas clair quelle classe est appelée, ce qui pourrait entraîner des problèmes de compilation.

Causes de redéfinition des erreurs de classes

Pour s'assurer que le logiciel s'exécute sans problème, il est crucial de comprendre ce qui déclenche les redéfinitions de classe et comment les résoudre.

1: la même classe définie plus d'une fois

Lorsqu'une classe est déclarée plus d'une fois dans un fichier source ou un fichier d'en-tête, il doit être redéfini. Plusieurs définitions de la même classe résultent de cela, ce qui rend difficile pour le compilateur de choisir la définition à utiliser. Lorsque vous tentez de lier les fichiers d'objets, cela peut entraîner des problèmes de compilation comme «Symbole en double» ou erreurs de linker.

2: Redéfinir la même classe avec des commandes et des valeurs similaires

Parce que les programmeurs redéfinissent généralement la même classe avec des commandes et des valeurs similaires, le redéfinir la classe L'erreur C ++ se produit. En conséquence, le système ne peut pas distinguer les deux scripts, conduisant à la redéfinition des variables dans de nombreuses lignes de code C ++.

3: construire une classe sur de nombreux fichiers

De plus, les développeurs peuvent rencontrer des problèmes de redéfinition de classe tout en construisant une classe dans de nombreux fichiers, ce qui pourrait entraîner quelques erreurs d'activités répétées. Par exemple, puisque le système reconnaît ses modifications, l'invite C ++ pour le constructeur de redéfinition doit contenir des valeurs et des balises distinctes.

Faisons de la redéfinition des erreurs de classe dans un programme C ++, qui est illustré ci-dessous:

#inclure
Utilisation de Namespace Std;
classe classe 1
public:
données int;
void func ()
couter << "Hello from Func!" << endl;

;
classe classe 1
public:
données int;
void func ()
couter << "Hello again from Func!" << endl;

;
int main()
Classe1 obj;
obj.Données = 50;
obj.Func ();
retour 0;

Dans le code ci-dessus, nous obtenons l'erreur «Redéfinition de la classe 1». Selon ce message d'erreur, nous tentons de redéfinir la classe Classe 1 En utilisant le même nom, la même collection de membres de données et le même ensemble de fonctions membres.

Sortir

Pour surmonter la redéfinition de la classe en C ++, vous devez supprimer une classe avec le même nom ou lui donner un autre nom.

Code corrigé

Ici, nous avons supprimé la classe avec le même nom pour obtenir la sortie souhaitée sur la console.

#inclure
Utilisation de Namespace Std;
classe classe 1
public:
données int;
void func ()
couter << "Hello from Func!" << endl;

;
int main()
Classe1 obj;
obj.Données = 50;
obj.Func ();
retour 0;

La classe Classe 1 est défini par le code, qui comprend également les fonctions des membres Func et Data (). Le programme crée un objet de type Class1, définit la valeur des données et invoque la méthode func ().

Sortir

Comment corriger l'erreur «redéfinition de la classe»

Pour réparer le redéfinition de la classe En C ++, certaines approches peuvent être utilisées.

1: Identifiez où la classe est redéfinie

Trouver les zones où la classe est redéfinie est la première étape. Pour ce faire, recherchez le nom de la classe dans le code du programme. Le programmeur peut choisir comment résoudre le problème une fois que l'emplacement du problème a été déterminé. Renommer la classe avec un suffixe ou un préfixe distinctif est une approche du problème. Une autre option consiste à combiner les deux classes en une seule classe qui a un seul nom et intègre toutes les fonctionnalités des deux classes originales.

2: Apporter des modifications au code du programme

Le programmeur doit modifier le code du programme afin d'appliquer le remède. Cela peut impliquer de renommer la classe, de mettre à jour les références de programme à la classe et de remplacer tout code unique à la classe d'origine. Le logiciel doit être testé une fois les modifications apportées pour s'assurer qu'elle fonctionne correctement.

3: Utilisez des gardiens d'en-tête

L'utilisation de gardiens d'en-tête est une autre méthode préférée pour empêcher que les fichiers d'en-tête d'être inclus plus d'une fois dans un seul fichier ou une application. Les gardes d'en-tête sont des directives de préprocesseur qui garantissent que le fichier d'en-tête n'est inclus qu'une seule fois, quelle que soit la fréquence à laquelle il apparaît dans le code source.

4: Utilisez un mot-clé externe

Une autre stratégie consiste à déclarer la classe dans un fichier d'en-tête et à la définir dans un seul fichier source à l'aide du mot-clé externe. En conséquence, la redéfinition des erreurs est évitée car il n'y a qu'une seule définition de la classe.

5: en utilisant des espaces de noms

L'utilisation d'espaces de noms est une autre solution au redéfinir la classe Erreur en C++. L'utilisation d'espaces de noms permet aux programmeurs d'unifier des classes et méthodes similaires sous un seul nom. Ce faisant, les conflits de noms sont réduits et la bonne classe est appelée. Le programmeur peut empêcher les conflits de noms en déclarant chaque classe dans un espace de noms unique.

Conclusion

Le redéfinition d'une classe Dans la programmation C ++ est une erreur fréquente qui peut être facilement évitée en identifiant la classe, en apportant des modifications au code, en utilisant des gardes d'en-tête, le mot-clé externe et les espaces de noms. Ces approches aident à garantir que la classe a une seule définition, en évitant les problèmes de compilation et de liaison.