C
SWrapper * s2 = new SWrapper("Test objekt 2");
// Use case sollte nicht verändert werden müssen
if(*s2 == "irgendwas")
{
// tu etwas
}
Was hast du hier vor? möchtest du den String, der im Wrapper steckt mit "irgendwas" vergleichen? Dann gibt es zwei Möglichkeiten, entweder die doppelte Referenzierung, wie du sie von vorne herein erkannt hast, also:
SWrapper * s2 = new SWrapper("Test objekt 2");
// Use case sollte nicht verändert werden müssen
if(**s2 == "irgendwas")
{
// tu etwas
}
oder den SWrapper nicht auf dem Heap anlegen (bessere Möglichkeit, wozu brauchst du ihn denn überhaupt dort?)
SWrapper s2("Test objekt 2");
// Use case sollte nicht verändert werden müssen
if(*s2 == "irgendwas")
{
// tu etwas
}
Das hat zur volge, dass du nicht mehr delete s2 aufrufen musst. Ich würde dir empfehlen, guck dir mal an, was Wann das Schlüsselwort new eigentlich Sinn macht, es macht momentan den Eindruck, als ob du von Java kommst und es immer benutzt.
PS.: ließ doch einfach mal, was hier gepostet wird, pumuckl hat die Frage beantwortet, die du danach gestellt hast
Edit:
Neben Konvertierungsmöglichkeiten (welche beim Wrapper sogar noch Sinn machen) gibt es auch die Möglichkeiten Vergleichsoperatoren zu überladen (==, !=, < etc.). wenn du nun
bool operator==(const SWrapper& lhs, const std::string& rhs);
bool operator==(const std::string& lhs, const SWrapper& rhs);
überlädst, kannst du auch den Wrapper mit einem String vergleichen. Wie schön die Lösung ist, ist ne andere Sache