Aufteilung von Code
-
Hallo
In meinem Buch bin ich gerade bei Klassen angelangt. Da hier erklärt wird das man den Code aufteilen soll mache ich das natürlich auch um zu üben wie es funktioniert.Im Buch steht: Implementations-Dateien(*.cpp)
Definitionen von Objekten bestimmter Datentypen. Leider steht hier nicht ob das bei Klassen auch so geht, von structs anscheinend ja.Doch leider funktioniert bei mir alles bis auf die Objekterzeugung in der .cpp Datei. Wenn ich das Objekt in main definiere geht es.
main.cpp (Hauptprogramm)
#include <iostream> #include <cstdlib> #include "klassen.h" using namespace std; int main(int argc, char *argv[]) { istAlter.setAge(20); cout << "Alter ist " << istAlter.getAge() << endl; }
class.h (Header für die Klasse(n))
#ifndef klassen_h #define klassen_h klassen_h class alter { public: int getAge() const; int setAge(int alter); private: int age; }; #endif
Implementierung der Klasse
#include "klassen.h" int alter::getAge() const { return age; } int alter::setAge(int alter) { age = alter; } /* Hier soll man doch auch Objekte erzeugen können */ alter istAlter; // Objekt istAlter aus Klasse alter erzeugen, war wohl nichts. /* Compilermeldung: main.cpp:9: error: `istAlter' undeclared (first use this function) main.cpp:9: error: (Each undeclared identifier is reported only once for each function it appears in.) */
Kann man Objekte von Klassen nur in 'main' erzeugen? oder auch in den Imp.-Dateien?
Ulrich Breymann C++ Einführung und professionelle Programmierung. 7. Auflage.
GCC 3.3.5 , Gentoo-Linux , Kdevelop 3.3.2Das sollte alles an Infos sein.
Danke und bye.
-
Du must in die .h Datei dann noch reinschreiben, dass deine Variable exsitiert. Also vor dem #endif noch
extern alter istAlter;
in die .h Datei eintragen, damit der Compiler weiß, wenn er die .h Datei ließt, dass die Variable istAlter schon in einerm Anderen Modul exsistiert.
-
Oh. Vor 2 Tagen habe ich das noch über Variablen allgemein und Konstanten gelesen. Das man es hier auch machen muss wußte ich nicht. Probiere ich heute Abend noch aus.
Danke !