invalid conversion from ‘const char’ to ‘char’
Есть такое определение (расположено вне функций):
struct {
const char* completion = "----TEST COMPLETED----",
speed = "Average typing speed",
speed_mod = "wpm",
accuracy = "Average accuracy",
work_harder = "Work harder for your accuracy!",
not_bad = "Not bad, but you can get it with better accuracy!",
excellent = "Excellent! Now, you can try to work with your speed.",
question_records = "Do you want to save your records?",
yes = "Yes",
no = "No",
question_name = "Enter your name",
players_records = "----RECORDS----",
bye = "Goodbye!";
} messages;
Компилятор здесь выдает error: invalid conversion from ‘const char’ to ‘char', указывая на каждый литерал. Мне непонятно, что он имеет ввиду. В чем некорректен этот код?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
В С/С++ при объявлении указателя *
относится не к типу, а к переменной, т.е. type * a
рассматривается как type (*a)
, а не (type*) a
, а потому эту звездочку надо указывать у каждого члена:
struct {
const char* completion = "----TEST COMPLETED----",
*speed = "Average typing speed",
*speed_mod = "wpm",
....
} messages;
Или объявить тип с помощью typedef
или using
и использовать его, например:
struct {
using ccptr = const char*; // Или typedef const char* ccptr;
ccptr completion = "----TEST COMPLETED----",
speed = "Average typing speed",
speed_mod = "wpm",
....
} messages;