Compiler Error

Wahrscheinlich dumme Frage, aber warum gibt das keinen Compiler-Error

buttons[0] = button.addButton(10,10,10,10,"Hallo");

aber das:

String s="Hallo";
buttons[0] = button.addButton(10,10,10,10,s);

Error:
error: no matching function for call to 'UTFT_Buttons::addButton(int, int, int, int, String&)'

Weil du die dämliche, langsame, Ressourcen-fressende und zu nix taugende String Klasse verwendest

In C sind Strings Null-terminierte char Arrays. Und entsprechend erwarten solche Funktionen einen char* als Parameter:

char s[] = "Hallo";
buttons[0] = button.addButton(10,10,10,10,s);

Was auch gehen sollte ist das:

String s = "Hallo";
buttons[0] = button.addButton(10,10,10,10, s.c_str());

Letztens habe ich gemerkt dass man doch inzwischen mal die c_str() Methode implementiert hat um an das interne Array zu kommen. Das hat man dann allerdings in der Referenz nicht dokumentiert. Es gibt aber immer noch keinen vernünftigen Grund die String Klasse zu verwenden.

Hallo,
"Weil du die dämliche, langsame, Ressourcen-fressende und zu nix taugende String Klasse verwendest"

Kann es sein, dass es Dinge gibt, die Dich richtig aufregen?
Ist ja köstlich.
Gruß und Spaß
Andreas

Nein, das war nur ein Auszug seiner nicht niedergeschriebenen Referenzen zur Stringklasse :smiley:

Ich rege mich nicht so sehr darüber auf, dass es du die Klasse verwendest, sondern dass sie schlecht ist :slight_smile:

Man hat sie zwar inzwischen verbessert (früher gab es da mal ein Speicherleck und mit c_str() kann man inzwischen Standard String Funktionen verwenden), aber sie verursacht mehr Probleme als sie löst. Manchmal funktionieren ganzen Programme nicht mehr richtig deswegen. Oder gar nicht mehr.

Vielen dank