Question

Je suis extrêmement désolé de poster une question aussi embarrassante newbish, mais je ne l'ai pas sali autour beaucoup avec C ++ depuis mes jours de collège et je pense à un moment donné, je buvais tout ce que je savais sur les pointeurs et les chaînes C ++ droite sur ma tête. En fait, je crée une application console C ++ (un roguelike, pour être précis) avec PDCURSES pour gérer la production. Je veux afficher des chaînes dynamiques (quelque chose que je chiffre serait très utile dans un jeu dynamique, heh), mais mvaddstr () continue à me lancer des erreurs. Voici un exemple de ce que je suis en train de faire:

 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();

Bien sûr, cela me donne une "conversion non valide de const char*' tochar * '" erreur sur le char * PVERS définition. Je sais que je fais quelque chose de vraiment sans vergogne, bêtement mal ici mais je suis vraiment rouillé à ce sujet. Toute aide serait super utile.

Était-ce utile?

La solution

Il suffit de déclarer pvers comme:

const char *pvers = vers.c_str();

Ce const signifie que vous n'allez pas modifier la mémoire pointée par pvers. Il est vraiment plus d'un indice afin que le compilateur peut crier dessus si vous cassez cette hypothèse. (Ce qui est la raison pour laquelle vous avez obtenu l'avertissement du compilateur). Vous pouvez commencer à voir quelque chose de génial si vous utilisez pvers après avoir changé vers au-delà de cette ligne, mais pour l'extrait que vous avez affichée Je ne vois pas ce problème.

Autres conseils

Asveikau est juste, mais je l'ai trouvé une autre option en effectuant une recherche par le biais de la documentation ncurses - je pourrais toujours juste mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers) pour le même effet

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top