Я получил эту ошибку при кодировании простой функции. Это моя спецификация функции.
string studentName;
string courseTaken[3];
void setStudent(string, string[]);
void Student::setStudent(string n, string a[])
{
studentName= n;
courseTaken = a;
}
Это ошибка, которую я получил:
несовместимые типы при присвоении строки* строке [3] в этой строке courseTaken = a;
В моем коде я никогда не объявлял никаких указателей или символов.
Я не совсем понимаю, что здесь происходит.
std::array
илиstd::vector
. Это не Ц. - person user202729   schedule 01.04.2018void Student::setStudent(string n, string *a)
. Под этим не C, @user202729 означает, что вы должны использовать контейнеры C++ вместо массивов C, в которых есть некоторые неинтуитивные вещи, особенно когда вы пытаетесь передать их функции. Он / она, вероятно, имеет в виду распространенную плохую практику обучения материалам C перед материалами C++. - person BessieTheCookie   schedule 01.04.2018a[]
, вы можете подумать о том, чтобы сделать это правильно. - person WhozCraig   schedule 01.04.2018std::copy(std::begin(foo), std::end(foo), std::begin(bar));
не сработает, потому что при передаче массивов в функции не передается информация о размере массива. Массивы C также не имеют функцийbegin()
иend()
, поэтому вам действительно нужно выполнять арифметические операции с указателями. В конце концов, просто используйте контейнеры C++. - person BessieTheCookie   schedule 01.04.2018string
?std::string
? - person Jive Dadson   schedule 01.04.2018