Frage

Ich bin sehr traurig, eine solche peinliche newbish Frage zu stellen, aber ich habe nicht um viel mit C ++ seit meiner Studienzeit muckte und ich denke, irgendwann ich alles getrunken, dass ich über Zeiger kannte und C ++ Strings direkt aus mein Kopf. Grundsätzlich Ich schaffe eine C ++ Konsolenanwendung (eine roguelike, um genau zu sein) mit PDCurses zu hand ausgegeben. Ich möchte dynamische Strings angezeigt werden (etwas, dass ich Zahl würde in einem dynamischen Spiel ziemlich nützlich sein, heh), aber mvaddstr () hält mich Fehler zu werfen. Hier ist ein Beispiel dafür, was ich versuche zu tun:

 string vers = "v. ";
 vers += maj_vers;// + 48;
 vers += ".";
 vers += min_vers;// + 48;
 vers += ".";
 vers += patch_vers;// + 48;
 char *pvers = vers.c_str();
 mvaddstr(5,17, pvers);
 refresh();

Natürlich gibt dies mir eine „Invalid Umwandlung von const char*' tochar * '“ Fehler auf dem char * pvers Definition. Ich weiß, ich mache etwas wirklich dreist, dummerweise falsch hier, aber ich bin wirklich rostig zu diesem Thema. Jede Hilfe wäre super hilfreich.

War es hilfreich?

Lösung

Just declare pvers wie:

const char *pvers = vers.c_str();

Dieses const bedeutet, dass Sie werden nicht die Erinnerung zu ändern, auf die pvers. Es ist wirklich eher ein Hinweis, so dass der Compiler an Sie schreien kann, wenn man diese Annahme brechen. (Das ist, warum Sie die Compiler-Warnung bekommen.) Sie beginnen könnten etwas flippig, um zu sehen, wenn Sie pvers verwenden, nachdem vers jenseits dieser Linie zu ändern, aber für das Snippet geschrieben Sie ich sehe nicht das Problem.

Andere Tipps

Asveikau ist richtig, aber fand ich eine andere Option durch einige ncurses Dokumentation gesucht -. Ich konnte immer nur für den gleichen Effekt mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top