2016-03-20 9 views
-2

Ich brauche etwas Hilfe bei meinen Hausaufgaben. Ich habe diesen Code auf "rational.cpp":twp C++ Fragen, 1. C2228 links von .. muss Klasse 2. Änderungstyp der Rückkehr von der Funktion

bool Rational::operator!=(const Rational num) 
{ 
if ((getMone() == num.getMone()) && (getMechane() == num.getMechane())) 
    return false; 
return true; 
} 
//and this is work well... really returns true or false 

string Rational::printTF(bool A) 
{ 
if (A) 
    return "true"; 
    return "false"; 
} 

und in meinem main.cpp:

<code><pre>cout << (a != b).printTF();</pre></code> 

und ich bekomme diese Fehlermeldung:

Fehler C2228 links von '.printTF' Muss Klasse/struct/union Rational main.cpp 40 (dass die 'cout' code ..)

Was ist hier falsch?

Gibt es eine Möglichkeit, zum Beispiel zu einer booleschen Funktion zu senden und String zurückzugeben?

Oder in meinem Code zu einer Rational (Nummer - 1/1) senden Klasse (die Fraktion zurückkehren soll), und wenn es Wert „0“ haben zum Beispiel des Rück nur „0“ ohne/..

ich versuchte NULL zurückzukehren, oder zu einem bool oder int-Funktion zum senden und dann .. zurückkehren und immer fruction zurückkehren ..

Marinos, der Groschen fällt .. mein Fehler verstehen ... Es macht mich frage mich nochmal, was genau sie von uns wollen ...

In Bezug auf die zweite Frage, in meiner Frage muss ich es für einen Bediener tun ator ... wie folgt aus:

Rational Rational::operator-(Rational num) 
{ 
    Rational tmp[3]; 
    tmp[0] = multFraction(num); 
    tmp[1] = num.multFraction(*this); 
    tmp[2].mone = tmp[0].mone - tmp[1].mone; 
    tmp[2].mechane = tmp[0].mechane; 

    if (checNumber(tmp[2])) 
    { 
     string printOne = tmp[2].mone; 
     return printOne; 
    } 
    return reducingNumber(tmp[2]); 
} 

(Ich weiß, dass die Rückkehr nicht .. nur funktioniert frage mich, wie ich so etwas tun kann ..)

Serge, habe ich versucht, Ihre seggest, und es funktioniert ... aber .... Sie haben uns gebeten, es so zu machen: (a! = b) .print(); also muss ich herausfinden, was sie meinten. Aber es ist gut zu wissen !!

+1

Eine Frage pro Frage bitte. Siehe: [fragen]. –

Antwort

1

Nun ist der Fehler offensichtlich hier

(a != b).printTF(); 

was erwarten Sie, dies zu tun? Sie rufen die Elementfunktion printTF eines nicht integrierten bool temporären Objekts auf. (a!=b) wird entweder true oder false ergeben; In beiden Fällen ist es unsensibel, z.B. false.printTF(); ... Ich kann Ihnen keine Lösung anbieten, weil ich nicht wirklich weiß, was Sie erwarten würden.

In Bezug auf Ihre andere Frage, sicher, Sie können, zum Beispiel:

std::string aFunction(bool b) { 
    // do something with b 
    std::string result = "something"; 
    return result; 
} 

oder mit Ihrer Klasse

std::string aFunction(Rational r) { 
    // do something with r 
    std::string result = "0"; 
    return result; 
} 
0

Sie erklären die Methode printTF auf einem Rational Objekt zu betreiben einen bool Parameter genommen wird, aber du benutzt es direkt auf einem bool, also der fehler: der ausdruck (a != b) ist ein bool kein Rational.

Sie sollten die Methode printTF als static erklären, da es kein Objekt nicht verwendet:

static std::string Rational::printTF(bool A) 
{ 
if (A) 
    return "true"; 
    return "false"; 
} 

und es auf diese Weise verwenden:

cout << Rational::printTF(a != b); 
Verwandte Themen