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

Передача аргумента конструктору в функции Main:

Vehicle aVehicle("VVV-111", 2010);

Определение конструктора:

Vehicle::Vehicle(char p[], int y) {

  strcpy(this->plateNum, p);
  this->year = y;
  this->Address[64]= "Factory"}

Класс автомобиля

      class Vehicle {

      char plateNum [9];
      const char* Address[64];
      int year;

   public:
      Vehicle();
      ~Vehicle();
      Vehicle(char p[], int y);
c++
0
katarachan 13 Ноя 2020 в 19:36

2 ответа

Лучший ответ

Вы передаете строковый литерал типа const char[8] (8 для размера строкового литерала) функции, получающей char [], что эквивалентно получению char * (потому что массивы C распадаются на указатели через границы функций).

Если вы заставляете конструктор получать const char * (или const char[]), он должен работать.

Однако я понятия не имею, что вы имеете в виду под this->Address[64]= "Factory". В этой строке нет смысла.

0
Omry 13 Ноя 2020 в 16:47

Когда вы вызываете свой метод, вы должны отправить тот же тип данных в параметр метода, например, вы можете изменить вызов конструктора, как показано ниже:

char p[9];
strcpy(p, "VVV-111");
Vehicle aVehicle(p, 2010); 
0
Amirhossein Yari 13 Ноя 2020 в 16:55