Technician Geschrieben 1. Februar 2002 Geschrieben 1. Februar 2002 Hi! Ich hab hier folgendes Problemchen: Eine Klasse "Kunde" soll als Attribut einen Vector enthalten, in dem Objekte der Klasse "Anlage" gespeichert werden. Da ich noch nie mit Vector und OOP gleichzeitig zu tun hatte: gehören die Zeilen #include <vector> using namespace std ; typedef vector<Anlage> ANLVECTOR; in die Header- oder CPP-Datei von "Kunde"?! ANLVECTOR myVector; ANLVECTOR::iterator myIterator; gehören in die Headerdatei, das ist mir klar... das ist hier mal (vereinfacht) meine Kunde-Headerdatei, noch ohne Vector. //KUNDE.H #ifndef KUNDE_H #define KUNDE_H class Anlage; class Kunde { public: Kunde(char* n); ~Kunde(){}; ... private: char* seinName; Anlage* seineAnlage; //bisher nur eine Anlage, mit dem Vector werden's viele! ... }; #endif Ich hoffe, ihr könnt mir da weiterhelfen; mit "mal rumprobieren ob's so oder so ist" is nämlich nix -> Projekt schon zu groß! Gruß, Technician Zitieren
Poldi Geschrieben 1. Februar 2002 Geschrieben 1. Februar 2002 probiers doch mal in nem mini projekt aus ... ich kann dir da leider nicht weiterhelfen weil ich keinen schimmer von oop habe ... mach dir doch eben ne kleine main mit hallo world und deine zwei anderen dateien und probier es aus! Zitieren
Klotzkopp Geschrieben 1. Februar 2002 Geschrieben 1. Februar 2002 Da Du den Typ ja schon in der Headerdatei benutzt, muss der typedef entweder in die Headerdatei, oder in die cpp-Datei, vor das #include. Zitieren
orsino Geschrieben 1. Februar 2002 Geschrieben 1. Februar 2002 Original geschrieben von Technician Hi! Ich hab hier folgendes Problemchen: Eine Klasse "Kunde" soll als Attribut einen Vector enthalten, in dem Objekte der Klasse "Anlage" gespeichert werden. Da ich noch nie mit Vector und OOP gleichzeitig zu tun hatte: gehören die Zeilen #include <vector> using namespace std ; typedef vector<Anlage> ANLVECTOR; in die Header- oder CPP-Datei von "Kunde"?! ANLVECTOR myVector; ANLVECTOR::iterator myIterator; gehören in die Headerdatei, das ist mir klar... das ist hier mal (vereinfacht) meine Kunde-Headerdatei, noch ohne Vector. //KUNDE.H #ifndef KUNDE_H #define KUNDE_H class Anlage; class Kunde { public: Kunde(char* n); ~Kunde(){}; ... private: char* seinName; Anlage* seineAnlage; //bisher nur eine Anlage, mit dem Vector werden's viele! ... }; #endif Ich hoffe, ihr könnt mir da weiterhelfen; mit "mal rumprobieren ob's so oder so ist" is nämlich nix -> Projekt schon zu groß! Gruß, Technician In dem Fall würde ich es in die Header Datei schreiben, zumindest die Typdefinition. //KUNDE.H #include <vector> using namespace std ; /* den vector include würde ich in das standard include stdafx.h ziehen */ #ifndef KUNDE_H #define KUNDE_H class Anlage; // Vorwärtsdeklaration typedef vector<Anlage*> ANLVECTOR; /* Muss nach der vorwärtsdeklaration von class Anlage stehen deshalb kann es auch nicht im Kunde.cpp vor dem dem Kunde.h include stehen. Und wenn es danach stehen würde, kannst du ANLVECTOR logischerweise nicht im header verwenden. Außerdem enthält der ANLVECTOR bei mir nur pointer auf anlage-objekte - macht operationen mit dem vector schneller. Wenn du wirklich komplette objekte in dem vector ablegen willst, reicht die einfache vorwärtsdeklaration nicht aus (geht nur für pointer). In diesem fall musst du vorher Anlage.h inkludieren. */ class Kunde { public: Kunde(char* n); ~Kunde(){}; ... private: char* seinName; Anlage* seineAnlage; //bisher nur eine Anlage, mit dem Vector werden's viele! ... }; #endif Zitieren
Technician Geschrieben 1. Februar 2002 Autor Geschrieben 1. Februar 2002 special @orsino @all Danke für eure Hilfe! Ich bin jetzt schon einen großen Schritt weiter! Technician Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.