problem mit include
-
ok dann danke an alle.
warub gibt es eigendlich den fehler wenn ich den header in schueler.h einbinde?
ich habe in jedem header#ifndef SCHUELER_H_ #define SCHUELER_H_ #endifsowas stehen damit ein header nur einmal eingebunden wird...
-
wie kann ich eigebdlich sichergehen, dass ich in der quelldatei die klasse Kurs aus Kurs.h und nicht die klasse Kurs aus Schueler.h benutze?
-
Namespaces.
EDIT: Aber warum gibt es das zweimal?!
-
wsxedcrfv schrieb:
wie kann ich eigebdlich sichergehen, dass ich in der quelldatei die klasse Kurs aus Kurs.h und nicht die klasse Kurs aus Schueler.h benutze?
Irgendwie machst du da merkwürdige Dinge. Wieso gibt es mehrere Klassen mit Namen Kurs? Oder verwechselst du jetzt Klasse und Objekt?
Lars
-
ich habe das problem, dass ich in
Schueler.h
#include "Kurs.h"
stehen hatte und in
Kurs.h
#include "Schueler.h".
das hat fehler verursacht und mir wurde geraten ich soll in Schueler.h eine neue klasse Kurs erzeugen und in der quelldatei Schueler.cpp einbinden.das Problem mit namespaces wäre doch, wenn ich in Schueler.h in einem namespace die klasse Kurs aus Schueler.h benutze, eine Funktion (mit einem parameter vom typ Kurs) erzeuge und dann in der quelldatei die andere klasse benutzen will (Kurs aus Kurs.h). würde ich dann nicht wieder fürd den parameter der funktion Kurs aus Schueler.h benutzen müssen?
-
@manni66
ich habe zwei klassen mit identischen namen.
wie du mir geraten hast.
oder hatte ich dich da falsch verstanden?
-
wsxedcrfv schrieb:
@manni66
ich habe zwei klassen mit identischen namen.
wie du mir geraten hast.
oder hatte ich dich da falsch verstanden?class Kurs;Deklariert keine Klasse Kurs (zumindest nicht richtig). Das gibt nur bekannt, dass es irgendwo eine Deklaration der Klasse Kurs gibt. Damit kann man zwar nicht viel anfangen, aber es reicht um Zeiger auf Kurs zu haben (da ja bekannt ist, dass es eine Klasse Kurs gibt, auch wenn nicht bekannt ist wie sie aussieht). Das ganze nennt man eine Vorwärtsdeklaration.
-
Du hast es absolut falsch verstanden.
Kurs.h:
#include <vector> class Schueler; class Kurs { std::vector<Schueler*> teilnehmer; };Schueler.h:
#include <vector> class Kurs; class Schueler { std::vector<Kurs*> kurse; };#include "Schueler.h" #include "Kurs.h" Schueler::Schuler() { kurse.push_back(new Kurs("wasauchimmer")); }... hab mal ein paar Definitionen etc weggelassen, bin faul.
-
SeppJ schrieb:
class Kurs;Deklariert keine Klasse Kurs (zumindest nicht richtig). Das gibt nur bekannt, dass es irgendwo eine Deklaration der Klasse Kurs gibt. Damit kann man zwar nicht viel anfangen, aber es reicht um Zeiger auf Kurs zu haben (da ja bekannt ist, dass es eine Klasse Kurs gibt, auch wenn nicht bekannt ist wie sie aussieht). Das ganze nennt man eine Vorwärtsdeklaration.
ah ok das wusste ich nicht.....
dnke an alle@Fellhuhn
hab ich jetzt auch bemerkt^^
-
Wie immer zu dem Thema poste ich gerne den Link:
Definitionen und Deklarationen in C++