я перегружен оператор [] в моем классе Интервал для возврата минут или секунд.Перегрузка оператора индекс «[]» в л-значение и г-значение случаев
Но я не знаю, как присвоить значения минут или второй, используя оператор [].
Например: Я могу использовать это заявление
cout << a[1] << "min and " << 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;
}
I знаю, что я должен объявлять переменные-члены как частные, но я объявил здесь публично только для моего удобства.
Это кажется ужасным примером перегрузки оператора ради него. У вас есть какое-то неясное требование, которое заставляет вас это делать? В противном случае это просто обфускация кода. – jalf
@jalf Я знаю, что это ужасный пример, но я хотел перегрузить [] оператор в универсальном классе для Object Array. – Searock
@jalf: почему http://cpp.sh/4fiz работает без какой-либо ошибки компилятора? Должна ли компилятор выдавать ошибку? Он ничего не дает в качестве результата. Что именно происходит в этой программе. – Destructor