Ошибка ISO C++ forbids converting a string constant to LPSTR
Хочу создать строку с типом LPSTR, чтобы менять ее во время работы программы, а потом преобразовать в LPCSTR (это для передачи последнего аргумента в функцию CreateFont).
Создаю вот так строку:
LPSTR currFontd = "Arial";
Выходит такая ошибка во время компиляции:
17:25:22,75 [C] #>g++ -mwindows window.cpp -o out.exe
window.cpp:20:19: warning: ISO C++ forbids converting a string constant to 'LPSTR' {aka 'char*'} [-Wwrite-strings]
20 | LPSTR currFontd = "Arial";
Что не так делаю? Может можно использовать другую строку, чтобы потом можно было передать в эту функцию?
Ответы (1 шт):
Вы по сути делаете
char * currFontd = "Arial";
Получается, что вы намерены (может, и нет, но требуете у компилятора такого права) изменить строковый литерал, например,
currFontd[0] = 'Q';
Литерал же — строка неизменяемая, и вы не можете обращаться с ней иначе как с константной, через const char * или, что то же LPCSTR.
Работайте или сразу с LPCSTR, или с копией литерала —
char currFontd[] = "Arial";
или там
string currFontd = "Arial";