Klassen Hierarchie?
-
Also, ich habe mutable und immutable Strings.
class my_string_mutable : my_string{ } class my_string_immutable : my_string{ } my_string *getString(){ if(is_immutable){ return new my_string_immutable(); }else{ return new my_string_mutable(); } }Da bekomm ich aber immer einen Fehler beim return type. Wie wird sowas gemacht

-
junta schrieb:
Da bekomm ich aber immer einen Fehler beim return type. Wie wird sowas gemacht

Nicht so.
-
Nathan schrieb:
junta schrieb:
Da bekomm ich aber immer einen Fehler beim return type. Wie wird sowas gemacht

Nicht so.
-
Ersetze das Schlüsselwort
classmitstructund es sollte gehen.
-
class my_string_mutable : public my_string { ... };oder
struct my_string_mutable : my_string { ... };Erklärung: Damit du ein Objekt einer Klasse als Objekt seiner Basisklasse behandeln kannst, musst du die Basisklasse sehen können. In einer Funktion, die nicht zur Klasse gehört und nicht per friend Einblick in ihre Interna nehmen kann, bedeutet das, dass die Basisklasse öffentlich (public) geerbt werden muss.
Dass das mit struct ohne ausdrückliches public geht, liegt daran, dass class und struct sich in C++ (ausschließlich) durch die Default-Sichtbarkeit unterscheiden. Bei struct ist sie public, bei class private -- d.h.
class foo : bar { int x; }; // entspricht: struct foo : private bar { private: int x; }; struct foo : bar { int x; }; // entspricht: class foo : public bar { public: int x; };Übrigens solltest du darüber nachdenken, aus der Funktion keinen nackten, sondern einen Smart-Pointer (etwa std::unique_ptr<my_string> oder std::shared_ptr<my_string>) zurückzugeben.
-
Danke!