Я пытаюсь написать перегруженные операторы ввода и перенапряжения, но функции не могут получить доступ к закрытым членам класса Money.I имеют «include namespace std;» и "#include", но он не позволит мне получить доступ к частным членам (в долларах и центах).Личные элементы данных недоступны для функции друга
ostream & operator<<(ostream &osObject, Money &right)
{
osObject << "Amount of money: $" << right.dollars << ".";
osObject << right.cents;
return osObject;
}
istream &operator>>(istream &isObject, Money &right)
{
isObject >> right.dollars;
isObject.ignore();
getline(isObject, right.cents;
return isObject;
}`
Заголовок файла:
#pragma once
class Money{
// Friends
friend ostream & operator<<(ostream, Money);
friend istream & operator>>(istream, Money);
private:
int dollars;
int cents;
void simplify();
//Some other stuff...
Я получаю ошибки, такие как: синтаксической ошибки: недостающего ';' до '&' 'ostream': 'friend' не разрешено в объявлениях о дате отсутствует спецификатор типа-int. C++ не поддерживает default-int
Подписи деклараций и определений функций должны совпадать. – juanchopanza
Я также предполагаю, что 'getline (isObject, right.cents;' просто опечатка ... – vsoftco