Hab Probleme mit mehreren cpps und header Dateien
-
Gude eine Frage, und zwar habe ich mehrere cpp, Header Dateien und das Problem ist das mein Vector welches in meiner datenbank header datei liegt in der Zeile (13 und 14) liegt diese Vektoren möchte ich in meiner kunde cpp datei benutzen in der Zeile (23) benutzen aber die kunde cpp Datei erkennt die Vector nicht, obwohl ich die Header Datei includiert habe weiß jetzt nicht, woran es liegt...
main cpp:
#include <iostream> using namespace std; int main() { return 0; }
kunde header:
#ifndef KUNDE_AUFGABE_KUNDE_H #define KUNDE_AUFGABE_KUNDE_H #include <string> using namespace std; class kunde { private: public: //Attribute: string Kundenname; string Name; //Stanartkonstruktor kunde(); //Allgemeiner Konstruktor kunde(string kundenamen, string name); //Methoden void kunde_hinzufuegen (kunde k); void kunde_loeschen(kunde k); void kunde_anzeigen(); }; #endif //KUNDE_AUFGABE_KUNDE_H
Kunde cpp:
#include "kunde.h" #include "datenbestand.h" #include <vector> using namespace std; //Standartkonstruktor kunde ::kunde() {}; //Allgemeinkonstruktor kunde ::kunde(string kundenamen, string name) { //Pointer this -> Kundenname = kundenamen; this -> Name = name; } //Methoden void kunde ::kunde_hinzufuegen(kunde k) { }
datenbank header:
#ifndef KUNDE_AUFGABE_DATENBESTAND_H #define KUNDE_AUFGABE_DATENBESTAND_H #include <vector> #include "kunde.h" #include "premium_kunde.h" using namespace std; class datenbestand { public: vector<kunde>vector_kunde; vector<premium_kunde> vector_premium_kunde; }; #endif //KUNDE_AUFGABE_DATENBESTAND_H
datenbank cpp
#include "datenbestand.h"
-
@adii950 Befolge doch erstmal die Tipps, die du für deine Bücher bekommen hast.
Woher weißt du, dass der Vector nicht erkannt wird?
-
Ja habe ich auch gemacht naja ich weiß es daswegen weil ich versucht habe in der kunde cpp datei meinen Vector aufzurufen mit den Namen meines Vectors aber er hat mir den Vector nicht angezeigt
-
@DirkB sagte in Hab Probleme mit mehreren cpps und header Dateien:
@adii950 Befolge doch erstmal die Tipps, die du für deine Bücher bekommen hast.
This!! Warum kann ein Kunde einen Kunden hinzufügen? Wo hinzu überhaupt? Warum ist das ist Aufgabe eines Kunden? Das ist doch dasselbe wie mit Buch und Bibliothek in deinem vorherigen Post.
Warum wird in "Kunde" denn der "Datenbestand" included? Überlege dir, wer von wem abhängen soll!
//Stanartkonstruktor
Sorry, da kann ich nicht dran vorbeigucken. Das Wort heißt "Standardkonstruktor".
aber die kunde cpp Datei erkennt die Vector nicht,
Was heißt das? Exakte Fehlermeldung, bitte!
-
@DirkB hab die this zeiger wieder weggemacht und stattdessen eine Initialisierungsliste benutzt und zu der anderen fragen weil es in der Aufgabenstellung stand:
Aufgabenstellung:
-
Programmieren Sie die Klassen
und sowie eine Klasse zur Verwaltung der Kunden
(schon gemacht). Überlegen Sie sich passend dazu eine
abstrakte Basisklasse. -
Implementieren sie Folgendes Menü:
- Eingabe eines Kunden
- Anzeige aller Kunden
-Suche nach Kunden
-
-
@adii950 sagte in Hab Probleme mit mehreren cpps und header Dateien:
Ja habe ich auch gemacht
Nein, hast du nicht.
Da gab es z.B. auch einen Hinweis bzgl. Headern undusing namespace
naja ich weiß es daswegen weil ich versucht habe in der kunde cpp datei meinen Vector aufzurufen mit den Namen meines Vectors aber er hat mir den Vector nicht angezeigt
Was verstehst du unter "angezeigt"?
Gibt es in der IDE keine Auswahl dazu oder meckert gar der Compiler?
-
@adii950
Irgendwo fehlt irgendwas bei dir und/oder ist falsch verdrahtet.Du schreibst "die kunde cpp Datei erkennt die Vector nicht" und zeigst dann Code -- wo in "die kunde cpp" gar nicht auf "die Vector" zugegriffen wird.
Dann, erst auf Nachfrage, schreibst du "weil ich versucht habe in der kunde cpp datei meinen Vector aufzurufen mit den Namen meines Vectors aber er hat mir den Vector nicht angezeigt". Und jetzt erwartest du dass wir a) wissen was du damit genau meinst und b) immer noch gewillt sind dir zu helfen, trotz dem du dir keine grosse Mühe zu geben scheinst dich verständlich zu machen.
-
Ist jetzt nichts speziell zu dem Thema, aber was mir aufgefallen ist,
die folgenden Zeilen#ifndef KUNDE_AUFGABE_DATENBESTAND_H #define KUNDE_AUFGABE_DATENBESTAND_H #endif
Benötigst du eigentlich nicht mehr. Es reicht, wenn du stattdessen
#pragma once
einfügst am Anfang deiner HEADER-Files
-
#pragma once
geht aber nicht mit allen Compilern, während das erste immer geht.
-
Wusste ich nicht. Programmiere nur mit VS.
Trotzdem danke der Info!
-
@unkwnusr Mir persönlich wäre noch kein Compiler unter gekommen, der dass nicht kann. GCC, Clang uns MSVC können das auf jeden Fall. Daher ist es meiner Meinung nach vollkommen in Ordnung das zu benutzen, wenn man weiß, dass es Compiler geben kann, die das nicht unterstützten.