Getter Typ?
-
Welchen Typ sollte logischerweise der getter einer Variable in einem Objekt sein?
#include <string> class T{ public: ? getName() const; private: std::string name; }Ich kann eine Kopie zurückgeben, also std::string, ich kann auch eine referenz std::string& zurückgeben, was ich unpraktisch finde, wegen Änderung, aber macht es sind, den Rückgabetyp als const std::string& zurückzugeben? Dann kann ich den String nicht mehr von außen ändern, aber den String auch nicht mehr direkt nutzen.
Wie sieht generell der getter solcher Variablen in C++ aus?
-
const std::string&das erspart die Kopie und verhindert eine Veränderung.
Wieso kannst Du den string nicht direkt nutzen? Was genau meinst Du?
-
Naja so habe ich ja einen const string und kann den Wert der Rückgabe nicht verändert, wenn ich also noch auf diesem String arbeiten will, muss ich den nochmal kopieren, ok scheint logisch.
-
? Wo ist dein Problem? Du kannst damit doch arbeiten ?!
template<typename T> class bar { public: bar(T const& data) : m_data(data) {} bar() {}; public: T const& get_data() const { return m_data; } void set_data(T const& data) { m_data = data; } private: T m_data; };... dann
#include <string> #include <iostream> int main() { bar<std::string> _inst("{c-tor}"); const std::string& str(_inst.get_data()); std::cout << str << " | " << str.length() << std::endl; _inst.set_data("set_data"); std::cout << str << " | " << str.length() << std::endl; }...
-
Ohoh, sorry falls ich mit dem T fälschlicherweise den Eindruck vermittelt habe, dass ich mich mit Templates auskenne
-
Dein
void set_data(T const& data) { m_data = data; }setzt vorraus, dass der Operator = aus dem const & data eine kopie in m_data erstellt, oder?
-
Ja oder wenn T nen Pointer ist, das der Pointer umgelenkt wird ... sollte doch eigentlich kein Problem sein

-
Verstehe, vielen dank für die Info

-
Ehm warum hat er aus v_orraus v****** gemacht? Es ist auf ner Blacklist???
-
Seikilos schrieb:
Ehm warum hat er aus v_orraus v****** gemacht? Es ist auf ner Blacklist???
Weil Marc++us die Rechtschreibung liebt. Man schreibt nämlich voraus, in dem Wort gibt es keine zwei r

Grüssli
-
Ah, da kann ich was lernen, cool
