Qual è la ridefinizione della classe in C ++ e come risolverlo?

Qual è la ridefinizione della classe in C ++ e come risolverlo?

Quando un programmatore cerca di definire una classe con lo stesso nome di una già che esiste, è noto come "Ridefinizione della classe". Il programma può comportarsi inaspettatamente a seguito di ciò poiché non sarà chiaro quale classe viene chiamata, il che potrebbe causare problemi di compilazione.

Cause di ridefinizione degli errori delle classi

Per assicurarsi che il software funzioni senza un problema, è fondamentale comprendere ciò che innesca le ridefinizioni della classe e come risolverli.

1: stessa classe definita più di una volta

Quando una classe viene dichiarata più di una volta in un file di origine o di intestazione, deve essere ridefinita. Diverse definizioni della stessa classe derivano da questo, rendendo difficile per il compilatore scegliere quale definizione utilizzare. Quando si tenta di collegare i file degli oggetti, ciò può portare a problemi di compilazione come "Simbolo duplicato" o errori di linker.

2: ridefinire la stessa classe con comandi e valori simili

Perché i programmatori in genere ridefiniscono la stessa classe con comandi e valori simili, il Ridefinizione della classe Si verifica un errore C ++. Di conseguenza, il sistema non è in grado di distinguere tra i due script, portando alla ridefinizione delle variabili in numerose righe di codice C ++.

3: costruire una classe su numerosi file

Inoltre, gli sviluppatori possono imbattersi in problemi di ridefinizione di classe durante la costruzione di una classe su numerosi file, il che potrebbe causare alcuni errori da attività ripetute. Ad esempio, poiché il sistema riconosce le sue modifiche, il prompt C ++ per il costruttore di ridefinizione deve contenere valori e tag distintivi.

Scaviamo nella ridefinizione degli errori di classe in un programma C ++, che è mostrato di seguito:

#includere
Utilizzo dello spazio dei nomi std;
class class1
pubblico:
Int Data;
void func ()
cout << "Hello from Func!" << endl;

;
class class1
pubblico:
Int Data;
void func ()
cout << "Hello again from Func!" << endl;

;
int main ()
Classe1 OBJ;
obj.Dati = 50;
obj.Func ();
restituzione 0;

Nel codice sopra, otteniamo l'errore 'Ridefinizione della classe Classe1'. Secondo questo messaggio di errore, stiamo tentando di ridefinire la classe Classe1 Utilizzando lo stesso nome, la stessa raccolta di membri dei dati e la stessa serie di funzioni dei membri.

Produzione

Per superare la ridefinizione della classe in C ++, è necessario rimuovere una classe con lo stesso nome o dargli un altro nome.

Codice corretto

Qui, abbiamo rimosso la classe con lo stesso nome per ottenere l'output desiderato sulla console.

#includere
Utilizzo dello spazio dei nomi std;
class class1
pubblico:
Int Data;
void func ()
cout << "Hello from Func!" << endl;

;
int main ()
Classe1 OBJ;
obj.Dati = 50;
obj.Func ();
restituzione 0;

La classe Classe1 è definito dal codice, che include anche le funzioni del membro func e data (). Il programma crea un oggetto di tipo Class1, imposta il valore di dati e invoca il metodo Func ().

Produzione

Come correggere l'errore di "ridefinizione della classe"

Per fissare il Ridefinizione della classe In C ++, alcuni approcci possono essere utilizzati.

1: Identifica dove viene ridefinita la classe

Trovare le aree in cui la classe viene ridefinita è il primo passo. Per fare ciò, cerca il nome della classe nel codice del programma. Il programmatore può scegliere come affrontare il problema una volta determinata la posizione del problema. Rinominare la classe con un suffisso o un prefisso distintivo è un approccio al problema. Un'altra opzione è quella di combinare le due classi in una singola classe che ha un singolo nome e incorpora ogni funzione delle due classi originali.

2: Apportare modifiche al codice del programma

Il programmatore deve modificare il codice del programma per applicare il rimedio. Ciò può comportare la ridenominazione della classe, l'aggiornamento di eventuali riferimenti al programma alla classe e la sostituzione di qualsiasi codice univoco per la classe originale. Il software dovrebbe essere testato una volta che le modifiche sono state apportate per assicurarsi che funzioni correttamente.

3: Usa le guardie dell'intestazione

L'uso delle guardie dell'intestazione è un altro metodo preferito per impedire che i file di intestazione vengano inclusi più di una volta in un singolo file o applicazione. Le guardie di intestazione sono direttive preprocessore che garantiscono che il file di intestazione è incluso solo una volta, non importa quanto frequentemente appare nel codice sorgente.

4: Usa la parola chiave esterna

Un'altra strategia è dichiarare la classe in un file di intestazione e definirla in un singolo file di origine utilizzando la parola chiave esterna. Di conseguenza, la ridefinizione degli errori viene evitato perché esiste solo una definizione della classe.

5: usando gli spazi dei nomi

L'uso degli spazi dei nomi è un'altra soluzione per Ridefinizione della classe Errore in c++. L'uso di spazi dei nomi consente ai programmatori di unificare classi e metodi simili con un unico nome. In tal modo, i conflitti del nome sono ridotti e la classe giusta viene chiamata. Il programmatore può prevenire i conflitti di nome dichiarando ogni classe in uno spazio dei nomi univoco.

Conclusione

IL Ridefinizione di una classe Nella programmazione C ++ è un errore frequente che può essere facilmente evitato identificando la classe, apportando modifiche al codice, utilizzando le guardie dell'intestazione, la parola chiave esterna e gli spazi dei nomi. Questi approcci aiutano a garantire che la classe abbia un'unica definizione, evitando la compilation e collegando i problemi.