Как мне создать массив указателей типа char C ++? - PullRequest
0 голосов
/ 07 марта 2020

Я не очень знаком с указателями, но у меня есть задание, которое требует от меня создания массива указателей типа char. Я просто не могу заставить работать код.

#include <iostream>
using namespace std;
int main() {

    int n = 0;
    char *seasons[] = { "Winter", 
                        "Spring",  
                        "Summer",
                        "Fall"};


    cout << seasons[n] << endl;

    return 0;
}

Я скопировал и вставил этот код из учебника, но продолжаю получать ошибки для строк, которые находятся в массиве. Ошибка E0144: значение типа "const char *" нельзя использовать для инициализации объекта типа "char *"

1 Ответ

1 голос
/ 07 марта 2020

Интересно, ваш создатель учебников быстро и грязно преобразовал существующий код C в C ++. В C строковые литералы являются массивами типа char (даже если они неизменны), но в C ++ они являются массивами типа const char.

. Решение здесь состоит в том, чтобы изменить тип seasons должно быть const char *[], чтобы создать массив указателей на эти const char массивы:

const char *seasons[] = { "Winter", 
                          "Spring",  
                          "Summer",
                          "Fall"};

Кроме того, я также не фанат вашей книги, выполняющей using namespace std;. Он загрязняет глобальное пространство имен всем пространством имен std, что может (и, по моему опыту, имеет) привести к конфликтам, которые нарушат код.

...