E0144 значение типа "const char *" нельзя использовать для инициализации сущности типа "char *"
Изучаю язык С++ не так давно, пытаюсь повторить пример, но он упорно не хочет воспроизводится.
class Singer : public Worker {
protected:
enum { other, alto, contralto, soprano, bass, baritone, tenor };
enum { Vtypes = 7 };
private:
static char* pv[Vtypes];
int voice;
public:
Singer() :Worker(), voice(other) {};
Singer(const std::string& s, long n, int v = other)
: Worker(s, n), voice(v) {};
Singer(const Worker& wk, int v = other)
: Worker(wk), voice(v) {};
void Set();
void Show()const;
};
проблема заключается в определении метода, хотя это не совсем правильно назвать.
char* Singer::pv[] = { "other", "alto","contralto","soprano",
"bass","baritone","tenor" };
выводит что в нём ошибка.
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Строковые литералы нельзя изменять, по сути они const char *. Если бы было можно инициализировать, как вы хотите - можно было бы изменять строковые литералы, типа, pv[0][3] = 'o';
Исправьте на
static const char* pv[Vtypes];

