2010-01-29 3 views
0

Мне очень жаль, что вы публикуете такой неловко новичок вопрос, но я не много трахался с C++ с моего колледжа, и я думаю, что в какой-то момент я выпил все, что знал о указателях и строках C++ прямо из моего глава. В принципе, я создаю консольное приложение на C++ (точнее, roguelike) с PDCurses для обработки вывода. Я хочу отобразить динамические строки (что-то, что я думаю, будет очень полезно в динамической игре, хе), но mvaddstr() продолжает бросать мне ошибки. Вот пример того, что я пытаюсь сделать:Как отображать переменные строки с использованием C++ и PDCurses?

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

Конечно, это дает мне «Invalid преобразование const char*' to символ * '» ошибки на символ * определение pvers. Я знаю, что я делаю что-то действительно нагло, глупо неправильно, но я действительно ржавый. Любая помощь будет очень полезна.

ответ

2

Просто объявить pvers как:

const char *pvers = vers.c_str(); 

Это const означает, что вы не собираетесь изменять память, на которую указывает pvers. Это действительно больше намека на то, что компилятор может орать на вас, если вы нарушите это предположение. (Вот почему вы получили предупреждение компилятора.) Вы можете начать видеть что-то напуганное, если вы используете pvers после изменения vers за этой строкой, но для опубликованного фрагмента я не вижу этой проблемы.

+0

Ах, спасибо тонну. Я проголосую за тебя, но у меня нет репутации. – Ryoshi

2

Asveikau прав, но я нашел еще один вариант, выполнив поиск по какой-либо документации по ncurses - я мог всегда просто mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers) для того же эффекта.

 Смежные вопросы

  • Нет связанных вопросов^_^