Перегрузка оператора индекса «[]» в случаях l-значения и r-значения

У меня есть перегруженный оператор [] в моем классе Интервал для возврата минут или секунд .

Но я не уверен, как назначать значения для минут или секунд с использованием оператора [].

Например: я могу использовать этот оператор

cout << a [1] << "min и" << a [0] << "sec" << endl;

, но я хочу перегрузить оператор [], чтобы я мог даже присвоить значения минутам или секундам, используя

a[1] = 5;
a[0] = 10;

Мой код:

#include <iostream>

using namespace std;

class Interval
{

public:

    long minutes;
    long seconds;

    Interval(long m, long s)
    {
        minutes = m + s / 60;
        seconds = s % 60;
    }

    void Print() const
    {
        cout << minutes << ':' << seconds << endl;
    }

    long operator[](int index) const
    {
        if(index == 0)
            return seconds;

        return minutes;
    }

};

int main(void)
{
    Interval a(5, 75);
    a.Print();
    cout << endl;

    cout << a[1] << "min and " << a[0] << "sec" << endl;
    cout << endl;

}

Я знаю, что должен объявить переменные-члены как частные, но я объявил здесь как открытые только для удобства.

6
задан nitin_cherian 21 January 2012 в 04:03
поделиться