• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

C++ strings konkatenieren?

creative7even

Jerseymac
Registriert
23.02.05
Beiträge
454
Hallo liebe Hackergemeinde...

wie kann es sein dass die append-Funktion der Klasse <string> nicht vorhanden ist?

Code:
#include <string>
using namespace std;

...

string Class::toString() {
  return *(this->servername).append(" made a booboo");
}
...funktioniert auf der Windose (Visual Studio), mein Apfel weigert sich... (wie lautet hier die Alternative?)

c7.
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
Natürlich gibt's auf dem Mac auch string::append(). Zum Beispiel
Code:
#include <string>
#include <iostream>

using namespace std;

string foo(string s) {
  return s.append(" Welt!");
}

int main()
{
  cout << foo(string("Hallo")) << endl;
  return 0;
}
kann ich auf dem Tiger mit g++ 4.0 problemlos übersetzen. Poste doch mal Deine Fehlermeldungen.
Ein bisschen unwohl ist mir allerdings, dass append() eine Referenz auf einen String zurückgibt, Du das aber als "echten" String weiterverarbeiten willst.
 
Zuletzt bearbeitet:

creative7even

Jerseymac
Registriert
23.02.05
Beiträge
454
Hallo!

Danke vorerst mal für die rasche Hilfe!

Fehlermeldung lautet:
Code:
error: request for member `append` in `this->Class::servername`, which is of non-aggregate type `std::string*`

'servername' ist ein string-pointer, deshalb wird er auch in der Methode toString() dereferenziert.

no idea.... c7
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
Ach so. Ich glaube, Du musst das anders klammern, weil der Stern vorne zum Schluß ausgewertet wird:
Code:
return (*(this->servername)).append(" made a booboo");
oder so:
Code:
return this->servername->append(" made a booboo");
 
  • Like
Reaktionen: creative7even