Использование класса в другом классе + массив классов.
Добавлено: 30 дек 2009, 21:40
Есть класс Money. Он используется в классе Cheque.
Класс Cheque имеет 3 закрытые переменные:
- int number; //номер чека
- Money sum; //сумма чека
- char state; //состояние (оплачен или нет)
Есть массив классов - Cheque test[5] (собственно список из 5 чеков).
Нужно подсчитать сумму оплаченных чеков, но компилятор выдает ошибку, хочет указатель (указатели я пока еще не знаю и задание на них не расчитано):
1. Аксессор выглядит так:
2. В классах Money и Cheque есть перегрузка операторов '+'.
Хотя возможно нужна какая-то другая перегрузка?!
Если вместо перегрузки оператора '+' использовать сложение через аксессоры:
то в итоге выходят ошибки аналогичные п.1 (требование указателя).
Вроде как других ошибок нету.
Заранее спасибо за помощь.
Класс 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'|
}
}
Код: Выделить всё
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;
}
Хотя возможно нужна какая-то другая перегрузка?!
Если вместо перегрузки оператора '+' использовать сложение через аксессоры:
Код: Выделить всё
paid_cheques = paid_cheques.get_value + test[i].get_sum;
Вроде как других ошибок нету.
Заранее спасибо за помощь.