Domanda

Sono estremamente dispiaciuto di inviare una domanda così imbarazzante newbish, ma non ho muck in giro molto con C ++ dai tempi del college e penso che ad un certo punto ho bevuto tutto quello che sapevo di puntatori e C ++ le stringhe di destra, fuori la mia testa. In sostanza, Sto creando un C ++ console app (un roguelike, per la precisione) con PDCurses di uscita manico. Voglio visualizzare le stringhe dinamiche (cosa che ho cifra sarebbe molto utile in un gioco dinamico, eh), ma mvaddstr () mi tiene gettando errori. Ecco un esempio di quello che sto cercando di fare:

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

Naturalmente, questo mi dà una "conversione non valida dal const char*' tochar * '" errore sul char * pvers definizione. So che sto facendo qualcosa di veramente sfacciatamente, stupidamente sbagliato qui, ma sono davvero arrugginito su questo. Qualsiasi aiuto sarebbe super disponibile.

È stato utile?

Soluzione

Proprio dichiarare pvers come:

const char *pvers = vers.c_str();

Questo const significa che non si ha intenzione di modificare la memoria puntato da pvers. E 'davvero più di un suggerimento in modo che il compilatore può urlare a voi se si rompe questa ipotesi. (È per questo che avete ottenuto l'avviso del compilatore.) Si potrebbe iniziare a vedere qualcosa di strano se si utilizza pvers dopo aver cambiato vers al di là di questa linea, ma per lo snippet che hai postato non vedo il problema.

Altri suggerimenti

Asveikau è giusto, ma ho trovato un'altra opzione per la ricerca attraverso alcuni documenti ncurses -. Potrei sempre e solo mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers) per lo stesso effetto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top