Wenn ein Programmierer versucht, eine Klasse mit demselben Namen zu definieren wie eine, die bereits existiert, ist sie als bekannt als "Neudefinition der Klasse". Das Programm kann sich aufgrund dessen unerwartet verhalten, da nicht klar sein wird, welche Klasse aufgerufen wird, was zu Zusammenstellungsproblemen führen kann.
Ursachen für die Neudefinition von Klassenfehlern
Um sicherzustellen, dass die Software ohne Störungen ausgeführt wird, ist es entscheid.
1: Die gleiche Klasse ist mehr als einmal definiert
Wenn eine Klasse mehr als einmal in einer Quelldatei oder einer Header -Datei deklariert wird, muss sie neu definiert werden. Daraus entstehen verschiedene Definitionen derselben Klasse, sodass es dem Compiler schwierig macht, welche Definition verwendet werden soll. Wenn Sie versuchen, Objektdateien zu verknüpfen, kann dies zu Zusammenstellungsproblemen wie führen "Doppelte Symbol" oder Linkerfehler.
2: Definieren Sie dieselbe Klasse mit ähnlichen Befehlen und Werten neu
Weil Programmierer typischerweise dieselbe Klasse mit ähnlichen Befehlen und Werten neu definieren, die Neudefinition der Klasse C ++ Fehler treten auf. Infolgedessen kann das System nicht zwischen den beiden Skripten unterscheiden, was zur Neudefinition von Variablen in zahlreichen Zeilen von C ++ - Code führt.
3: Erstellen einer Klasse über zahlreiche Dateien in Bezug auf zahlreiche Dateien
Außerdem können Entwickler auf Probleme der Klassenrefinition stießen, während sie eine Klasse in zahlreichen Dateien erstellen, was zu einigen Fehlern von wiederholten Aktivitäten führen kann. Da das System beispielsweise seine Modifikationen erkennt.
Begraben wir uns in die Neudefinition von Klassenfehlern in einem C ++ - Programm, das unten angezeigt wird:
#enthalten
Verwenden von Namespace STD;
Klasse class1
öffentlich:
int Daten;
void func ()
Cout << "Hello from Func!" << endl;
;
Klasse class1
öffentlich:
int Daten;
void func ()
Cout << "Hello again from Func!" << endl;
;
int main ()
Class1 OBJ;
obj.Daten = 50;
obj.Func ();
Rückkehr 0;
Im obigen Code erhalten wir den Fehler "Neudefinition der Klasse Class1". Nach dieser Fehlermeldung versuchen wir, die Klasse neu zu definieren Klasse 1 Mit demselben Namen, der gleichen Sammlung von Datenmitgliedern und dem gleichen Satz von Mitgliedsfunktionen.
Ausgang
Um die Neudefinition der Klasse in C ++ zu überwinden, müssen Sie eine Klasse mit demselben Namen entfernen oder ihr einen anderen Namen geben.
Korrigierter Code
Hier haben wir die Klasse mit demselben Namen entfernt, um die gewünschte Ausgabe an der Konsole zu erhalten.
#enthalten
Verwenden von Namespace STD;
Klasse class1
öffentlich:
int Daten;
void func ()
Cout << "Hello from Func!" << endl;
;
int main ()
Class1 OBJ;
obj.Daten = 50;
obj.Func ();
Rückkehr 0;
Die Klasse Klasse 1 wird durch den Code definiert, der auch die Mitgliederfunktionen Funktionen und Daten enthält () (). Das Programm erstellt ein Objekt vom Typ Klasse1, legt den Wert der Daten fest und ruft die Func () -Methode auf.
Ausgang
So beheben Sie "Neudefinition des Klasse" -Fehler
Um das zu reparieren Neudefinition der Klasse In C ++ können einige Ansätze verwendet werden.
1: Identifizieren Sie, wo die Klasse neu definiert wird
Das Finden der Bereiche, in denen die Klasse neu definiert wird, ist der erste Schritt. Suchen Sie dazu nach dem Klassennamen im Programmcode. Der Programmierer kann auswählen, wie das Problem angegangen wird, sobald der Standort des Problems bestimmt wurde. Das Umbenennen der Klasse mit einem unverwechselbaren Suffix oder Präfix ist ein Ansatz für das Problem. Eine andere Möglichkeit besteht darin, die beiden Klassen in eine einzelne Klasse zu kombinieren, die einen einzigen Namen enthält und jedes Merkmal der beiden Originalklassen einbezieht.
2: Änderungen am Programmcode vornehmen
Der Programmierer muss den Programmcode ändern, um das Mittel anzuwenden. Dies kann bedeuten, die Klasse umzubenennen, alle Programmreferenzen auf die Klasse zu aktualisieren und jeden Code zu ersetzen, der für die Originalklasse eindeutig war. Die Software sollte getestet werden, sobald die Änderungen vorgenommen wurden, um sicherzustellen, dass sie ordnungsgemäß funktioniert.
3: Verwenden Sie Header Guards
Die Verwendung von Header Guards ist eine weitere bevorzugte Methode, um zu verhindern, dass Header -Dateien mehr als einmal in eine einzelne Datei oder Anwendung eingeschlossen werden. Header Guards sind Präprozessor -Richtlinien, die garantieren, dass die Header -Datei nur einmal enthalten ist, egal wie häufig sie im Quellcode erscheint.
4: Verwenden Sie externes Schlüsselwort
Eine andere Strategie besteht darin, die Klasse in einer Header -Datei zu deklarieren und sie in einer einzelnen Quelldatei mit dem externen Schlüsselwort zu definieren. Infolgedessen wird die Neudefinition von Fehlern vermieden, da es nur eine Definition der Klasse gibt.
5: Verwenden von Namespaces
Die Verwendung von Namespaces ist eine weitere Lösung für die Neudefinition der Klasse Fehler in c++. Mit der Verwendung von Namespaces können Programmierer ähnliche Klassen und Methoden unter einem einzigen Namen vereinen. Auf diese Weise werden Namenskonflikte reduziert und die richtige Klasse heißt. Der Programmierer kann Namenskonflikte verhindern, indem sie jede Klasse in einem eindeutigen Namespace deklariert.
Abschluss
Der Neudefinition einer Klasse In der C ++ - Programmierung ist ein häufiger Fehler, der durch die Identifizierung der Klasse, Änderungen des Codes, die Verwendung von Headerwächtern, das externe Schlüsselwort und die Namespaces leicht vermieden werden kann. Diese Ansätze helfen zu der Gewährleistung, dass die Klasse eine einzige Definition hat, die Zusammenstellung und Verknüpfungsprobleme vermeidet.