std::basic_string<T> erweitern?
-
Hi ihrs!
der destructor von std::basic_string ist leider nicht virutal, gibt es eine möglichkeit diese Klasse mit weiteren methoden zu erweitern? z. B. einer Trim-Funktion oder ähnlichem?
In C# gibt es ja sog. extensions, gibt es sowas in C++ auch oder eine andere Möglichkeit eine trim-Methode in std::basic_string oder einer ableitung, kapselung oder ähnlichem, diese Methode einzubauen?
-
Hier lohnt sich die Implementierung einer globalen Funktion mehr. Einige beklagen sich jetzt schon, dass
std::basic_stringviel zu überladen wäre.Kombiniert mit den STL-Algorithmen stehen dir sehr viele Möglichkeiten zur Manipulation offen.
-
globale funktionen sind aber nicht gerade nicht gerade objektorientiert? Hab schon gedacht ggf. ein Adapter-Pattern einzusetzen, aber die handhabung dann ist mehr als "murks". globale funktion finde ich bäh.
-
das mna das 2008 noch selber machen muss

-
Wie du selbst schon vorgeschlagen hast, würde ich auch std::string einfach kapseln, ungefähr so wie die string-Klasse das selbst mit einem char-Array macht (wenn auch das keine Klasse ist).
-
@ moagnus
die frage ist dann nur, wie ich den zugriff steuere, damit die handhabung equal mit dem von std::basic_string ist.also so:
my_string test ("hallo"); test.find_last_not_of ("l"); // std::basic_string methode test.trim (); // meine methode
-
Hard Coder schrieb:
globale funktionen sind aber nicht gerade nicht gerade objektorientiert? [...] globale funktion finde ich bäh.
Naja, du musst es wissen. Wahrscheinlich hast du diese Einstellung, weil du von C# kommst. C++ ist aber nicht rein objektorientiert; globale Funktionen haben durchaus ihre Berechtigung. Schau dir doch mal die STL-Algorithmen an, die sind ein gutes Beispiel dafür.
Hard Coder schrieb:
die frage ist dann nur, wie ich den zugriff steuere, damit die handhabung equal mit dem von std::basic_string ist.
Mit Aggregation wirst du nicht darum herum kommen, jede Methode einzeln zu kapseln.