Ich habe überladenen Operator [] in meiner Klasse IntervallMinuten oder Sekunden zurück.Überlastung des Index-Operators "[]" in den L-Wert und r-Wert Fällen
Aber ich bin nicht sicher, wie Werte Minuten zuweisen oder zweite mit Operator [].
Zum Beispiel: Ich kann diese Anweisung verwenden
cout << a[1] << "min and " << a[0] << "sec" << endl;
aber ich will Operator [] zu überlasten, so dass ich sogar Werte zu Minuten oder Sekunden zuordnen können mit
a[1] = 5;
a[0] = 10;
Meine code:
#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 Ich weiß, dass ich Mitgliedsvariablen als privat deklarieren muss, aber ich habe sie hier nur für meine Bequemlichkeit als öffentlich deklariert.
das scheint ein schreckliches Beispiel für die Überlastung des Betreibers zu sein. Haben Sie eine obskure Anforderung, die Sie dazu zwingt? Ansonsten ist es nur Codeverschleierung. – jalf
@jalf Ich weiß, dass es ein schreckliches Beispiel ist, aber ich wollte den Operator [] in der generischen Klasse für Object Array überladen. – Searock
@jalf: Warum funktioniert http://cpp.sh/4fiz ohne Compilerfehler? Sollte der Compiler keinen Fehler ausgeben? Es gibt nichts als Ausgabe. Was genau passiert in diesem Programm? – Destructor