Pregunta

Siento mucho para publicar una pregunta tan vergonzosamente newbish, pero no he estropeado todo mucho con C ++ desde mis días de colegio y creo que en algún momento me bebí todo lo que sabía acerca de los punteros y C ++ cadenas de la derecha de mi cabeza. Básicamente, estoy creando una aplicación de consola de C ++ (un roguelike, para ser precisos) con PDCurses a la salida mango. Quiero mostrar cuerdas dinámicas (algo que cifra sería muy útil en un juego dinámico, je) pero mvaddstr () me mantiene a generar errores. He aquí un ejemplo de lo que estoy tratando de hacer:

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

Por supuesto, esto me da una "conversión no válida del const char*' tochar * '" error en la char * pvers definición. Yo sé que estoy haciendo algo realmente descaradamente, estúpidamente mal aquí pero estoy muy oxidado en esto. Cualquier ayuda sería muy útil.

¿Fue útil?

Solución

Sólo declarar pvers como:

const char *pvers = vers.c_str();

Esta const significa que no se va a modificar la memoria a la que apunta pvers. Es realmente más de una pista para que el compilador puede gritarte si se rompe esta suposición. (Es por eso que tienes la advertencia del compilador.) Es posible empezar a ver algo funky si utiliza pvers después de cambiar vers más allá de esta línea, pero para el fragmento publicado que no veo el problema.

Otros consejos

Asveikau es correcto, pero he encontrado otra opción buscando a través de algún tipo de documentación ncurses -. Siempre podía simplemente mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers) para el mismo efecto

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top