Pergunta

Sinto muito por postar uma pergunta tão embaraçosamente nova, mas não estou muito com C ++ desde os meus dias de faculdade e acho que em algum momento bebi tudo o que sabia sobre ponteiros e cordas de C ++ logo de cabeça. Basicamente, estou criando um aplicativo de console C ++ (uma bike roguel, para ser mais preciso) com PDCurses para lidar com a saída. Quero exibir strings dinâmicos (algo que eu acho que seria bastante útil em um jogo dinâmico, heh), mas o mvaddr () continua me jogando erros. Aqui está um exemplo do que estou tentando fazer:

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

Claro, isso me dá uma "conversão inválida de const char*' toChar *'"Erro na definição de char *pvers. Eu sei que estou fazendo algo de maneira realmente descarada, estupidamente errado aqui, mas estou realmente enferrujado com isso. Qualquer ajuda seria super útil.

Foi útil?

Solução

Apenas declare pvers Como:

const char *pvers = vers.c_str();

este const significa que você não vai modificar a memória apontada por pvers. É realmente mais uma dica para que o compilador possa gritar com você se você quebrar essa suposição. (É por isso que você recebeu o aviso do compilador.) Você pode começar a ver algo descolado se usar pvers Depois de mudar vers Além dessa linha, mas para o snippet que você postou, não vejo esse problema.

Outras dicas

Asveikau está certo, mas encontrei outra opção pesquisando em algumas documentações de Ncurses - eu sempre poderia apenas mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers) pelo mesmo efeito.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top