list<Klasse> an Konstruktor übergeben.
-
Hallo Leute,
ich möchte in den Konstruktor einer KlasseA eine List einer KlasseB übergeben. Geht das?
#include "klasseB.h" #include <list> #ifndef _KLASSEA_H #define _KLASSEA_H class KlasseA{ private: static unsigned int ID; unsigned int a,b,c; public: KlasseA(list<KlasseB> Liste_Klasse_B ); // Fehler passiert hier ~KlasseA(); }; #endifDer Compiler sagt mir: error: expected ')' bevoer '<' token.
Wäre für eine kurze Hilfestellung dankbar.
-
benutze einfach std::list<...>
-
Oder
using namespace std;
-
theta schrieb:
benutze einfach std::list<...>
Balduin schrieb:
Oder
using namespace std;Oh man wie peinlich..

Danke!
-
- Nein, benutze
using namespacenicht in der Headerdatei. Tu das niemals, denn so machst du den ganzen Namensraum-Inhalt in sämtlichen inkludierenden Dateien irreversibel bekannt, was dem Gliederungskonzept der Namensräume zuwider läuft. - Mit
std::list<KlasseB>als Parameter hast du zudem eine sinnlose Kopie des gesamten Containers. Warum nicht eine Referenz aufconst(const std::list<KlasseB>&)? - Ich würde keinen Destruktor definieren, falls der nichts tut. Dann reicht der compilergenerierte. Falls er doch etwas tut, müsstest du auch an eine Implementierung von Kopierkonstruktor und Zuweisungsoperator denken (Regel der Grossen Drei).
- Header-Guards solltest du um den ganzen Code, also inklusive Include-Direktiven, herum spannen.
- Bezeichner wie
_KLASSEA_H, die mit Unterstrichen und Grossbuchstaben beginnen oder die zwei aufeinanderfolgende Unterstriche enthalten, sind für Compiler und Implementierung reserviert. Nimm doch einfachKLASSEA_H.
- Nein, benutze
-
Nexus schrieb:
- Nein, benutze
using namespacenicht in der Headerdatei. Tu das niemals, denn so machst du den ganzen Namensraum-Inhalt in sämtlichen inkludierenden Dateien irreversibel bekannt, was dem Gliederungskonzept der Namensräume zuwider läuft. - Mit
std::list<KlasseB>als Parameter hast du zudem eine sinnlose Kopie des gesamten Containers. Warum nicht eine Referenz aufconst(const std::list<KlasseB>&)? - Ich würde keinen Destruktor definieren, falls der nichts tut. Dann reicht der compilergenerierte. Falls er doch etwas tut, müsstest du auch an eine Implementierung von Kopierkonstruktor und Zuweisungsoperator denken (Regel der Grossen Drei).
- Header-Guards solltest du um den ganzen Code, also inklusive Include-Direktiven, herum spannen.
- Bezeichner wie
_KLASSEA_H, die mit Unterstrichen und Grossbuchstaben beginnen oder die zwei aufeinanderfolgende Unterstriche enthalten, sind für Compiler und Implementierung reserviert. Nimm doch einfachKLASSEA_H.
Das sind gute Tips. Für C++ Anfänger wie mich gerade richtig. Danke dir!
- Nein, benutze