Так что я очень новичок в C++ и имею фон в динамических языках, это, вероятно, вопрос новичков. Я пытался написать вековое упражнение, см ниже:C++ - Невозможно преобразовать из 'char []' в 'char []'
class Person
{
public:
Person(char n[], int a) {
name = n;
age = a;
}
int age;
char name[];
};
int main(int argc, char const *argv[])
{
Person p("John", 25);
return 0;
}
Это бросает ошибку:
main.cpp(8) : error C2440: '=' : cannot convert from 'char []' to 'char []'
There are no conversions to array types, although there are conversions
to references or pointers to arrays
Почему нужно конвертировать из одного типа? Это мой полный код и полная ошибка, кстати. Любая помощь приветствуется!
Это является плохим (вводит в заблуждение, заблуждение) сообщение об ошибке. Тем не менее, это незаконная ошибка. Вы даже не можете использовать 'char name [];' в структуре или классе, но вы еще не дошли до этой ошибки. Вам нужно определить размер для массива или использовать «std :: string» или, возможно, (но, вероятно, не очень целесообразную) игру с символом 'char * name;'. Однако, если вы выберете 'char * name', вам придется иметь дело с распределением во время строительства и выпуска во время уничтожения, а также беспокоиться о назначении и создании копии, а также перемещать семантику и безопасность исключений. –
Использование компилятора Microsoft C++, который, похоже, вызывает очень запутывающие сообщения об ошибках. Думаю, они ожидают, что вы будете использовать Visual Studio, а не командную строку. – EpicPineapple