std::list fehler?!?
-
Wie kann ich die Variable definieren wenn sie private ist?
ich check nichts mehr

-
Hat vielleicht jmd noch eine Idee?
Die Definition was PI angesprochen hat scheitert, weil wie am Code sichtbar private ist. Ich brauche die umbedingt um weiter arbeiten zu können!

-
std::list<std::string> blaList::werteListe;in einer *.cpp Datei.
SeppJs Frage bleibt dennoch offen.
-
Wenn es nicht static ist wie soll ich dann bei setString auf die Liste zugreifen können. Ich möchte aus dieser Klasse kein Objekt erzeugen sondern sie soll von allen Klassen zugreifbar sein.
-
Wenn du keine Objekte anlegen willst, wozu brauchst du dann überhaupt eine Klasse?
(wegen "private": Das bedeutet nur, daß niemand außerhalb der Klasse die Variable verwenden darf - die Definition ist trotzdem erlaubt und notwendig)
-
Beobachter01 schrieb:
Ich möchte aus dieser Klasse kein Objekt erzeugen
Warum ist des dann überhaupt eine Klasse? Mach's doch als einen Satz von freien Funktionen. Das, was die Schnittstelle dann definiert, ist eine einfache Header-Datei, keine Klassendefinition.
//header #ifndef DINGS_BUMS_HPP_INCLUDED #define DINGS_BUMS_HPP_INCLUDED #include <string> namespace blaList { void setString(std::string wert); } // namespace blaList #endif // Include-GuardUnd sonst für die Zukunft:
class turteltaube { static int zeug; // DEKLARAtion }; int turteltaube::zeug; // DEFINItionKlassendefinition kann man in eine Header-Datei packen. Die Definition eines statischen Elements darf nur in maximal einer Übersetzungseinheit auftauchen. Schau in Deinem C++ Buch mal nach, ob Du etwas zur "one definition rule" findest. Konzepte wie Deklaration/Definition und Übersetzungseinheit solltest Du intus haben, genauso wie diese wichtige Regel. Das steht in jedem vernünftigem C++ Buch. Solche schlauen Bücher werden Dir viel Zeit sparen!
-
Mein Ziel war es einen universelle Liste bereitzustellen in der alle Klassen bzw. die Objekte von der Klasse darauf zugreifen können.
Da ist mir eine Klasse mit statischen Werten eingefallen.#include <list> namespace bla { std::list<std::string> liste; void setWerte(std::string wert); } void bla::setWerte(std::string wert){ liste.push_front(wert); } void bla::getWert(){ std::string wert = liste.pop_front(); //wird hier auch das Element gelöscht?? return wert; }würde dies ausreichen, für das oben genannte Problem?
-
Beobachter01 schrieb:
Mein Ziel war es einen universelle Liste bereitzustellen in der alle Klassen bzw. die Objekte von der Klasse darauf zugreifen können.
Zweck?
-
Zweck ist nun mit einem Scheduler einzelne Objekte zu managen und auf die Daten die sie in diese Liste hinterlegen zuzugreifen!
-
Da würde sich ggf. auch ein Singleton empfehlen.