Fehlermeldung trotz Einbindung
-
Hallo allerseits,
ich bin gerade dabei meine Hausaufgabe zu machen und komme an einer Stelle leider nicht weiter. Ohne jetzt auf die ganze Aufgabe einzugehen möchte ich bei der main-Methode eine Frage stellen.
Hier die main-Methode:
#include "Datum.hpp" #include "DatumISO.hpp" #include "DatumDE.hpp" #include "DatumUSA.hpp" using namespace std; int main(){ cout<<"Erzeuge Objekte und gebe korrektes Datum in drei Formaten aus"<<endl; DatumISO* f1=new DatumISO(1,4,2013); DatumDE* f2=new DatumDE(1,4,2013); DatumUSA* f3=new DatumUSA(1,4,2013); cout<<f1->formatiere()<<endl; cout<<f2->formatiere()<<endl; // cout<<f3->formatiere()<<endl; delete f1; delete f2; // delete f3; }
Leider erhalte ich bei der Erzeugung von f3 die folgende Fehlermeldung:
DatumUSA was not declared in this scopeWarum erhalte ich hier einen Fehler? Mir erscheint es richtig sinnlos, da ich auch Instanzen der Klasse DarumDE und DatumISO auf dieselbe Art und Weise erzeuge und nicht vergessen habe, DatumUSA zu laden.
Wäre für Tipps dankbar
LG Markus
-
Nun, dann zeig mal DatumUSA.hpp.
Und wieso new?
-
DatumUSA.hpp:
#ifndef DATUMDE_HPP #define DATUMDE_HPP #include "Datum.hpp" #include <string> #include <iostream> #include "tostring.hpp" using namespace std; class DatumUSA: public Datum { public: DatumUSA(int, int, int); virtual ~DatumUSA(); string formatiere(); }; #endif
Verstehe die Frage mit new nicht
Wie kann man denn noch Instanzen erzeugen?
Hatte damals Java programmiert und da habe ich immer new verwendet.
-
Zeilen eins und zwei.
-
#ifndef DATUMDE_HPP
-
Dein Include Guard Macro ist falsch.
Markus97 schrieb:
DatumUSA.hpp:
Verstehe die Frage mit new nicht
Wie kann man denn noch Instanzen erzeugen?Na ohne new. Wir sind hier nicht in Java, in C++ kann man Instanzen einfach so erstellen:
DatumISO f1(1,4,2013);
Brauchste auch kein delete, der Code ist wesentlich schneller, ...
Hatte damals Java programmiert und da habe ich immer new verwendet.
Ja, und du dachtest dir halt: Och komm, mach ich das einfach genauso wie in Java auch. Hat ja auch Klassen, ist ja dasselbe.
Wenn du Englisch sprichst, verwendest du dann auch deutsche Grammatik?
C++ und Java sind unterschiedliche Sprachen mit ganz unterschiedlichen Paradigmen und Arten zu programmieren. Tu Sachen nicht ohne dich zu erkundigen so, wie du es in Java machen würdest.
-
Ärgerlich -.-
Danke!
-
Ich hätte eine weitere Frage:
Und zwar geht es darum, dass ich bei der Kompilierung mit g++ keine Fehler/Warnungen erhalte und alles so abläuft wie ich es gerne hätte.
Bei der Verwendung des Befehls g++ -Wall -o jedoch erhalte ich viele Warnungen wie "undefined reference to Datum..." und anschließend wird die Datei Datum.cpp in dem jeweiligen Ordner ohne Warnung gelöscht. Kann mir jemand sagen, woran das liegt?
-
Hat sich erledigt