ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
177
177
EMPFEHLEN
-
Ich habe ein Problem beim überschreiben von Methoden. Und zwar meckert der Compiler dann immer wegen multiple definition of bla herum.
Folgendes wollte ich machen:
Ich habe eine Klasse Entry...
Code :1 2 3 4 5 6
class Entry { public: Entry(); virtual void test(); };
...und eine Klasse SpecialEntry die von Entry erbt.
Code :1 2 3 4 5 6
class SpecialEntry : public Entry { public: SpecialEntry(); void test(); };
Die Methode test() soll in SpecialEntry überschrieben werden.
In der Main Klasse wird test nun aufgerufen
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
... #include <entry.h> #include <specialentry.h> class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Entry entry; Ui::MainWindow *ui; };
Code :1 2 3 4
..... SpecialEntry se; se.test(); ....
Der Compiler meint aber immer
error: multiple definition of `Entry::test()'
Weiß jemand was ich da tun kann?Geändert von Ladnaks (05.10.11 um 21:11 Uhr)
-
05.10.11 20:46 #2
Kann es sein, dass du die Datei zweimal einbindest?
Schreibe mal in die Header-Dateien folgendes:
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13
#ifndef __ENTRY_H__ #define __ENTRY_H__ // Dein eigtl. Code #endif // ----------------------------- #ifndef __SPECENTRY_H__ #define __SPECENTRY_H__ // Dein eigtl. Code #endif
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
05.10.11 20:57 #3
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Mein Vermutung wäre, dass du die Implementierung der Methoden auch in die Headerdatei außerhalb der Klasse geschrieben hast. Das geht so nicht. Du brauchst eine entry.cpp und specialentry.cpp Datei.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
@ComFreek
So habe ich es bereits
@deepthroat
Nein, in der Header Datei steht keine Implementierung. Hier mal die gesamte Header Datei:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
#ifndef ENTRY_H #define ENTRY_H #include <QString> #include <iostream> class Entry { public: Entry(); virtual void test(); }; #endif // ENTRY_H
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
#ifndef SPECIALENTRY_H #define SPECIALENTRY_H #include <entry.h> class SpecialEntry : public Entry { public: SpecialEntry(); void test(); }; #endif // SPECIALENTRY_HGeändert von Ladnaks (05.10.11 um 22:18 Uhr)
-
05.10.11 21:14 #5
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Interessanter wäre eigentlich die Stelle wo du die test Methoden implementierst.
Und die genauen Befehle beim Build und die genaue Fehlermeldung.If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Ich habs jetzt gefunden. Das war ein unglaublich dummer Fehler. Ich hatte in SpecialEntry Entry::test() statt SpecialEntry::test() geschrieben.
Ähnliche Themen
-
IE Definition List und Dropdown Menu Problem
Von hmmNaGut im Forum CSSAntworten: 4Letzter Beitrag: 07.03.11, 23:05 -
[c++] Code::Blocks: multiple definition
Von ComFreek im Forum C/C++Antworten: 7Letzter Beitrag: 10.05.10, 18:12 -
Array Definition Problem
Von dobermant im Forum PHPAntworten: 6Letzter Beitrag: 30.07.08, 13:51 -
C++ Programm Layout (multiple definition)
Von Tyg3r im Forum C/C++Antworten: 3Letzter Beitrag: 21.09.07, 23:53 -
"multiple definition"
Von DeChecka im Forum C/C++Antworten: 4Letzter Beitrag: 22.06.05, 19:37





Zitieren

Login






