Няколко въпроси относно условието на домашно 4
Здравейте всички!
Малко ми са неясни някои моменти около домашно номер 4.
1. как по-точно де се реализират подточки 1.а.v и 1.a.vi? Предишните подточки е зададено като се натиска конкретен клавиш. За тези не е казано точно как. Може ли да се реализират и те с натискането на клавиш? Сега го препрочетам отново условието и се чудя - може би това не е точно реализацията на меню, което да извежда възможните опции, а е стъпков процес - първо момичето на касата въвежда 10 цифрения код, след това въвежда една от въпросните букви и чак след това се изпълняват подточки 1.a.v и 1.a.vi
2. от къде се взимат стойности за въпросните items? Според мен би трябвало да има възможност потребителя да може да ги въвежда или ние можем да ги въведем hard-coded?
3. На първо четене, зададената домашна не я виждам като някакво по-сложно използване на знанията, предадени в лекция 4. Имаме масив от един обекти от един несложен клас, където се съхраняват данните на стоките и единствено това го виждам като OOP изпълнение. Никъде не виждам нито онаследяване, множествено онаследяване, да не говорим вече за виртуални функции, абстрактни класове и т.н. Може би само предефинирането на оператор, но и то ми изглежда излишно. Може би отново не съм доразбрал условието?
И аз бих искала да вмъкна един въпрос относно лекция 4. Последния пример, който правихме с класа BankAccount, Man, Women, Person не ми се компилира. Унаследявам с private класа Person от класовете Man и Women и добавям класа Woman като friend клас на класа Man, при предефинирането на оператора равно в класа Women ми дава следната грешка:
'Person::BankAccount' not accessible because 'Man' uses 'private' to inherit from 'Person'
Ето това е кода:
#include <iostream>
class BankAccount
{
public:
float balance;
};
class Person
{
public:
BankAccount BankAccount;
};
class Man;
class Man : private Person
{
public:
Man()
{
BankAccount.balance = 0;
}
friend class Woman;
friend void AddsMoneyToFriendsCard(float amount, Man &aMan);
};
class Women : private Person
{
public:
Women &operator=(Man &aMan)
{
this->BankAccount.balance = aMan.BankAccount.balance;
aMan.BankAccount.balance = 0;
return *this;
}
void wasteMoney()
{
this->BankAccount.balance = 0;
}
};
void AddsMoneyToFriendsCard(float amount, Man &aMan)
{
aMan.BankAccount.balance += amount;
}
int main()
{
Man Gosho = Man();
AddsMoneyToFriendsCard(2000, Gosho);
Women Penka = Women();
Penka = Gosho;
Penka.wasteMoney();
return 0;
}
Благодаря предварително за помощта!
Първо в class Person трябва да е BankAccount bankAccount, макар че, някои компилатори не го правят на проблем. И също трябва да е friend class Women , а не friend class Woman и готовo.
Благодаря за отговора yondim77, толкова пъти го проверих и не забелязах, че не съм написала името на класа точно :)