我非常抱歉张贴这样的尴尬newbish的问题,但因为我的大学时代我还没有搞乱多用C ++四周,我认为在某些时候我喝了一切,我知道指针和C ++字符串右出的我的头。基本上,我创建与PDCurses到手柄输出一个C ++控制台应用程序(一个roguelike,要准确)。我想显示动态字符串(的东西,我图将是一个动态博弈非常有用的,嘿嘿),但mvaddstr()不断抛出我的错误。这里是什么,我试图做一个例子:

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

当然,这给我一个“从const char*' tochar转换无效*'”错误的字符* pvers定义。我知道我在做一些真正明目张胆,愚蠢的错误在这里,但我对这个真的很生疏。任何帮助将是超级有用的。

有帮助吗?

解决方案

只是声明pvers为:

const char *pvers = vers.c_str();

const意味着你不打算修改存储器通过pvers指向。这真的更多的是暗示,使编译器可以骂你,如果你打破了这种假设。 (这就是为什么你得到了编译器警告。)你可能会开始看到一些时髦的,如果你改变pvers超出此行之后使用vers,但对于段,您贴我没有看到这个问题。

其他提示

Asveikau是正确的,但我发现了另一个选项,通过一些ncurses的文档搜索 - 我总是可以只mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers)达到相同的效果。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top