Ich versuche, Code zu schreiben, der eine Klasse mit den privaten Stunden und Minuten erstellt. Jetzt versuche ich eine neue Klasse aus einer Ganzzahl minus einer anderen Klasse zu erstellen.Ganzzahl minus eine Klasse
class Foo
{
Public:
Foo(int u, int m);
Foo(int m);
int operator-(const Foo& other);
friend Foo operator-(int lhs, const Foo& rhs);
Private:
int minute, hour;
};
Foo::Foo(int u, int m): hour(u), minute(m){}
Foo::Foo(int m): hour(0), minute(m){}
int Foo::operator-(const Foo& other)
{
int x;
x = (60*(uur-other.uur));
x += (min - other.min);
return x;
}
main()
{
Foo t1(2,10);
const Foo kw(15);
Foo t2(t1 -kw);
Foo t3(2,10);
Foo t4(132 -t3);
}
Jetzt kann ich nicht bekommen T4 nur 2 Minuten enthalten (132 - ((60 * 2) -10)) Wer weiß, wie diese zu lösen? ich den Fehler: Fehler: keine Übereinstimmung für ‚operator-‘ (Operandentypen sind ‚int‘ und ‚Foo‘)
void operator-(int x, const Foo& other);
Wenn ich diese Funktion enthalten erhalte ich die Fehler Fehler: ‚void foo :: operator- (int, const Foo &) 'muss entweder Null oder ein Argument nehmen. Verstanden mit dem folgenden Code arbeiten:
Foo operator-(int lhs, const Foo& rhs)
{
int y;
y = lhs - rhs.min;
y -= (60 * rhs.uur);
return y;
}
Sie müssen [Überlastung] (http://stackoverflow.com/questions/4421706/operator-overloading) der 'Betreiber -' der Klasse. – NathanOliver
Oder Sie könnten einen Cast-Operator definieren, um einen 'Foo' in einen' int' zu konvertieren, und einen 'Foo'-Konstruktor, der ein einzelnes' int' übernimmt. – Beta
'(1,0)' vs '(0, 60)' .. das wird Spaß machen. –