Невозможно получить доступ к закрытой переменной класса друга при перегрузке "<<" и ">>" (с использованием нескольких файлов) - PullRequest
0 голосов
/ 14 октября 2019

Я только что узнал о классах друзей и операторах перегрузки в C ++, где я столкнулся с проблемой, когда я не могу получить доступ к закрытым переменным в классе друга. Я почти уверен, что это связано с тем фактом, что мы должны были разделить каждый файл (Header, .cpp и main). Нужны свежие глаза.

// Содержимое Percent.h

#ifndef PERCENT_H
#define PERCENT_H

#pragma once

class Percent
{
    // friend const Percent operator >>(Percent& first, Percent& second);
public:
    friend bool operator ==(const Percent& first,
        const Percent& second);

    friend bool operator <(const Percent& first,
        const Percent& second);
    Percent();

    friend istream& operator >>(istream& inputStream,
        Percent& aPercent);

    friend ostream& operator <<(ostream& outputStream,
        const Percent& aPercent);
    //There will be other members and friends.
private:
    int value;
};

// Содержимое Percent.cpp

#include <iostream>
#include "Percent.h"

using namespace std;

istream& operator >>(istream& inputStream,
    Percent& aPercent)
{
    char percentSign;
                        ERROR HERE - Cannot access value
    inputStream >> aPercent.value;
    inputStream >> percentSign;
    return inputStream;
}

ostream& operator <<(ostream& outputStream,
    const Percent& aPercent)
{
    outputStream << aPercent.value << '%';
    return outputStream;
}
#endif // !PERCENT_H

// Main.cpp не написаноеще

...