3Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
466
466
EMPFEHLEN
-
Hallöle,
wie es der Titel schon sagt, möchte ich eine Klasse in ein Header-File auslagern, um den Quelltext übersichtlicher zu halten (es gibt noch eine .cpp, in der die Implementierung der Klasse steht).
- IDE = Code::Blocks v10.05
- Compiler = mingw32-g++
Hier mal meine bisherigen Codestücke (alles roh, da nur zum Testen):
MAIN.cpp
Code cpp:1 2 3 4 5 6 7 8 9 10 11
#include <iostream> #include <stdio.h> #include <string.h> #include "matrix.h" using namespace std; int main() { matrix test; return 0; }
matrix.h
Code cpp:1 2 3 4 5 6 7 8 9 10
#ifndef _matrix_h_ #define _matrix_h_ class matrix { public: void matix(void); ~matrix(); }; #endif
matrix.cpp
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13
#include "matrix.h" using namespace std; matrix::matrix(void) { //TODO } matrix::~matrix() { //TODO }
So, nun zu meinem Problem:
Wenn ich das Ganze so kompilieren lasse, dann bekomme ich folgenden Fehler von Code::Blocks:
"undefined reference to 'matrix::~matrix()'".
Wenn ich die Instanzierung von "test" in der MAIN.cpp auskommentiere, dann läuft die Kompilierung sauber durch.
Das gleiche Problem bestand auch vorher schon mit dem Konstruktor, welches sich nach erneutem Schreiben der Sourcefiles in Luft aufgelöst hat
(der Sourcecode war identisch).
Nun scheint mir der Compiler schon vertrauenswürdig, nur weiß ich nicht, was ich ändern könnte, um den Fehler zu beheben.
Vllt. könnte mir da jemand mit Rat und Tat zur Seite stehen?
Danke schon mal im Voraus.Mfg, Alex
“The function of good software is to make the complex appear to be simple.” (Grady Booch)
“First, solve the problem. Then, write the code.” (John Johnson)
-
Hi,
du musst matrix im Header natürlich richtig schreiben
Grüße JennestaGeändert von Jennesta (17.12.11 um 16:41 Uhr)
Was soll daran kompliziert sein? Es muss doch nur ein Rad bewegt werden, man kann aufsteigen, es kommt die Matschhütte und durch den Regenbogen gelangst du zum hungrigen Affen, der Affenschwanz wird gezogen und bums kommst du zum Paradispark.
-
Ich vermute auch stark, dass der Code oben nicht das ist, was du compilierst. Zwischen matix und matrix besteht nämlich ein kleiner Unterschied.
Beziehungsweise vermute ich, dass matrix.cpp gar nicht compiliert wird. Denn spätestens da bekommst du einen Fehler weil du eine Funktion mit einem Körper versiehst, die du nirgendwo deklariert hast (der Konstruktor). Da matrix.cpp aber nicht compiliert wird ist der Konstruktor natürlich auch nirgendwo mit einem Körper versehen, daher die Fehlermeldung.Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
-
17.12.11 21:06 #4
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.516
Er meckert nicht beim Kompilieren sondern beim Linken. Und was er versucht zu finden ist der Destruktor nicht der Konstruktor.
Meine Vermutung: Du hast in den Projekt-Einstellungen für die Datei matrix.cpp nicht den Haken bei Debug oder Release reingemacht, deswegen wird es weder kompiliert noch gelinkt.
Allerdings haben die beiden Vorposter recht, der Konstruktor fehlt.Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
@Saftmeister: Daher ja auch meine Schlussfolgerung:
Der Code oben wird nicht kompiliert, denn sonst gäbe es schon da einen Fehler, da der Code syntaktisch nicht korrekt ist
Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
-
17.12.11 22:35 #6
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.516
Naja, syntaktisch scheint er in Ordnung zu sein, nur semantisch nicht
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Also, ich habe das mal korrigiert....ja, immer diese Schreibfehler
.
Dann hatte ich jedoch den gleichen Fehler für den Konstruktor.
Ich muss allerdings dazu sagen, dass ich kein Projekt angelegt hatte, sondern die Dateien einfach so als .h bzw. .cpp im gleichen Ordner abgespeichert habe ( ich war davon ausgegangen, dass Code::Blocks die Files automatisch linked ).
Nachdem ich es dann in ein Projekt eingefügt hatte, hat es geklappt.
Danke nochmal an Euch - wie immer eine gute Hilfe.Mfg, Alex
“The function of good software is to make the complex appear to be simple.” (Grady Booch)
“First, solve the problem. Then, write the code.” (John Johnson)
Ähnliche Themen
-
Methoden von einer Klasse auslagern - PHP
Von finnex im Forum PHPAntworten: 10Letzter Beitrag: 12.06.10, 15:23 -
ActionListener in extra Klasse auslagern mit Extends?
Von Angiii im Forum JavaAntworten: 9Letzter Beitrag: 09.04.09, 16:48 -
Auslagern von Struct in Header-Datei
Von Radmor im Forum Borland CBuilder und VCLAntworten: 0Letzter Beitrag: 15.10.07, 18:25 -
Header File/Klasse
Von the_duke_at im Forum VisualStudio & MFCAntworten: 3Letzter Beitrag: 31.07.04, 08:44 -
Header-Datei mit Klasse
Von Kwark im Forum C/C++Antworten: 4Letzter Beitrag: 21.05.03, 17:33





Zitieren

Login






