Как я могу получить доступ к строке, внутри объекта, в массиве? - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь получить доступ к значению строки в массиве объектов. Строка используется для создания исходного объекта.

У меня есть класс Camper, у которого есть конструктор Camper (строковое имя); Затем я создал массив из моего класса Camper. Я хочу написать оператор if, который перехватывает строку 'name' для сравнения со строкой, введенной пользователем.

Мои ошибки: E0711 выражение должно иметь тип bool (или быть конвертируемым в bool)
Условное выражение C2451 типа 'Camper' недопустимо

Я уверен, что ошибки относятся к одной и той же проблеме.

Я очень новичок в C ++, поэтому дайте мне знать, если вы видите что-то еще, что не имеет смысла для вас, или если это просто невозможно. Благодаря.

void addPayment(Camper arr[]) {
    string name;
    cout << "   What is the camper's name?   ";
     cin >> name;
    Camper c = Camper(name);
    for (int i = 0; i < sizeof(arr); ++i) {

        if (arr[i] == c) {   // Here is where I have the bug
        c.pay();    // What should I use instead of arr[i]?
        }
    }
    cout << "   " << name << " has paid.";
}

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

if (arr [i] == c) вы должны перезаписать ваш '==' в своем Camper

bool operator==(const Camper &a,const Camper &b) 
{
   //...
}
0 голосов
/ 30 апреля 2019

Массивы распадаются на указатели в параметрах функции.Тип вашего arr - Camper*.sizeof(arr) не возвращает ожидаемое вами значение.Вы должны указать количество элементов в качестве отдельного параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...