BLUESCREEN3D
15-03-2006, 22:13
Ich will in C++ eine Klasse für den Datenbankzugriff schreiben.
Diese sollte es ermöglichen, dass man mit Hilfe von operator<<() den Query zusammensetzen kann.
Deshalb habe ich mir überlegt, dass es sinnvoll wäre, std::ostringstream als Basisklasse zu verwenden. Allerdings muss es auch möglich sein, den Query in einen C-String umzuwandeln (so wie mit std::string::c_str()). Nun enthält std::ostringstream diese Funktion aber nicht, d.h. ich müsste die selber schreiben, was wohl nur über den Umweg eines Strings geht:
string tmp(this->str());
return(tmp.c_str());
Deshalb wäre es vllt. besser, std::stringstream als Basisklasse zu nehmen, da diese die Funktion read() enthält wodurch kein Umweg über einen String nötig ist.
Oder ich nehme std::string als Basisklasse, müsste dann aber operator<<() hinzufügen, was wohl der umständlichste Weg wäre...
Mehrfachvererbung von std::ostringstream und std::string ist auch keine Lösung, da die Funktionen operator<<() und c_str() dann auf unterschiedliche Strings zugreifen.
Was meint ihr, welche Klasse sich in diesem Fall am besten als Basisklasse eignet? Ich tendiere momentan zu std::stringstream...
Diese sollte es ermöglichen, dass man mit Hilfe von operator<<() den Query zusammensetzen kann.
Deshalb habe ich mir überlegt, dass es sinnvoll wäre, std::ostringstream als Basisklasse zu verwenden. Allerdings muss es auch möglich sein, den Query in einen C-String umzuwandeln (so wie mit std::string::c_str()). Nun enthält std::ostringstream diese Funktion aber nicht, d.h. ich müsste die selber schreiben, was wohl nur über den Umweg eines Strings geht:
string tmp(this->str());
return(tmp.c_str());
Deshalb wäre es vllt. besser, std::stringstream als Basisklasse zu nehmen, da diese die Funktion read() enthält wodurch kein Umweg über einen String nötig ist.
Oder ich nehme std::string als Basisklasse, müsste dann aber operator<<() hinzufügen, was wohl der umständlichste Weg wäre...
Mehrfachvererbung von std::ostringstream und std::string ist auch keine Lösung, da die Funktionen operator<<() und c_str() dann auf unterschiedliche Strings zugreifen.
Was meint ihr, welche Klasse sich in diesem Fall am besten als Basisklasse eignet? Ich tendiere momentan zu std::stringstream...