Использование класса в другом классе + массив классов.

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Dragon
Сообщения: 99
Зарегистрирован: 01 окт 2009, 11:21
Откуда: Odessa
Контактная информация:

Есть класс Money. Он используется в классе Cheque.

Класс Cheque имеет 3 закрытые переменные:
- int number; //номер чека
- Money sum; //сумма чека
- char state; //состояние (оплачен или нет)

Есть массив классов - Cheque test[5] (собственно список из 5 чеков).
Нужно подсчитать сумму оплаченных чеков, но компилятор выдает ошибку, хочет указатель (указатели я пока еще не знаю и задание на них не расчитано):

Код: Выделить всё

Cheque test[5];
Money paid_cheques; //сумма оплаченных чеков

//Сумма оплаченных чеков
for(i = 0; i < 5; i++)
{
    //1.
    if(test[i].get_state == 'y') //error: invalid use of member (did you forget the `&' ?)
    {
        //2.
        paid_cheques = paid_cheques + test[i].get_sum; //error: no match for 'operator+' in 'paid_cheques + test[i].chequenamespace::Cheque::get_sum'|
     }
}
1. Аксессор выглядит так:

Код: Выделить всё

Money:
 double Money::get_value() const
    {
        return (all_cents * 0.01);
    }

Cheque:
double Cheque::get_sum() const
    {
        return sum.get_value();
    }

//Есть такой вариант
Money Cheque::get_sum() const
    {
        return sum;
    }
2. В классах Money и Cheque есть перегрузка операторов '+'.
Хотя возможно нужна какая-то другая перегрузка?!
Если вместо перегрузки оператора '+' использовать сложение через аксессоры:

Код: Выделить всё

paid_cheques = paid_cheques.get_value + test[i].get_sum;
то в итоге выходят ошибки аналогичные п.1 (требование указателя).

Вроде как других ошибок нету.
Заранее спасибо за помощь.
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

выложи описание классов, а лучше сам проект.
Dragon
Сообщения: 99
Зарегистрирован: 01 окт 2009, 11:21
Откуда: Odessa
Контактная информация:

Хм, элементарнейшую ошибку допустил. Век живи, век учись... Вызываю функцию-член, а () забыл указать. Вот он и ругался на то, что я возможно хочу указатель использовать.
Ответить