me han sobrecargado [] operador en mi clase Intervalo para volver minutos o segundos.La sobrecarga del operador subíndice "[]" en los casos un valor L y R-valor
Pero no estoy seguro de cómo asignar valores a minutos o segundo utilizando [] operador.
Por ejemplo: puedo usar esta declaración
cout << a[1] << "min and " << a[0] << "sec" << endl;
pero quiero sobrecargar [] operador, por lo que incluso puede asignar valores a minutos o segundos usando
a[1] = 5;
a[0] = 10;
Mi código:
#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 Sé que tengo que declarar las variables miembro como privadas, pero he declarado aquí como público solo para mi conveniencia.
que parece un terrible ejemplo de sobrecarga del operador por el mero hecho de hacerlo. ¿Tienes algún requisito oscuro que te obligue a hacer esto? De lo contrario, es solo ofuscación de código. – jalf
@jalf Sé que es un ejemplo terrible, pero quería sobrecargar al operador [] en la clase genérica para Object Array. – Searock
@jalf: ¿por qué http://cpp.sh/4fiz funciona sin ningún error de compilación? ¿No debería el compilador lanzar un error? No da nada como salida. ¿Qué está pasando exactamente en este programa? – Destructor