Problem mit Manipulatoren



  • als aufgabe ist gestellt, dass man mit hilfe eines parametrierten manipulators die umrechnung von dm in euro so durchführen kann:
    cout << Euro(10) << endl;

    hab mir das so gedacht wie es unten steht, aber da bekomme ich den fehler daß die funktion euro keine 1 argumente akzeptiert.

    weiß jemand einen lösungsansatz?

    #include <iostream>
    
    using namespace std;
    
    ostream& Euro (ostream& os, double dm)
    {
    	return os << (dm / 1.95583);
    }
    
    void main()
    {
    	cout << Euro(10) << endl;
    }
    


  • SkEaToN schrieb:

    #include <iostream>
    
    using namespace std;
    
    ostream& Euro (ostream& os, double dm)
    {
    	return os << (dm / 1.95583);
    }
    
    void main()
    {
    	cout << Euro(10) << endl;
    }
    

    Naja wenn dann doch eher so...oder nicht 😉 ?!^^

    #include <iostream>
    
    using namespace std;
    
    double Euro (double dm)
    {
    	return (dm / 1.95583);
    }
    
    int main()
    {
    	cout << Euro(10) << endl;
    	return (0);
    }
    

    PS: void main() ist KEIN C++ Standard...!! ⚠



  • ja na klar würde da so gehen, aber es soll mit nem manipulator für den << operator geschrieben werden, und nicht mit einer normalen funktion.

    naja, anstonsten wart ich eben bis freitag zur übungsstunde 🙂



  • Das is doch ein Manipulator oder versteh ich da was falsch?



  • bluecode schrieb:

    Das is doch ein Manipulator oder versteh ich da was falsch?

    Jo mein ich auch...der Operator in der Funktion bringt dir nix 😃

    Du benutz ihn dich hier:

    cout << Euro(10) << endl;
    

    👍


  • Mod

    das ist kein manipulator sondern eine ganz normale funktion, die ihr argument geeignet verändert. ein (stream-) manipulator verändert den stream so, dass er den nächsten input/output anders behandelt. wie in

    cout << hex << 20;
    


  • genau das meinte ich. ich kann ja auch einen manipulator schreiben um teile einer klasse auszugeben.

    bloß weiß ich nicht wie ich das bei einer normalen funktion machen kann (Euro)



  • SkEaToN schrieb:

    genau das meinte ich. ich kann ja auch einen manipulator schreiben um teile einer klasse auszugeben.

    bloß weiß ich nicht wie ich das bei einer normalen funktion machen kann (Euro)

    ahso...du redest von globaler Operatorüberladung ?!



  • habs jetzt mal mit einer klasse realisiert, daran sieht man ganz schön wie die manipulatoren arbeiten:

    aber das ganze muss doch auch als funktion realisierbar sein, nicht nur als klasse, oder?

    class Euro
    {
    public:
    	double dmark;
    	Euro(double i);
    };
    
    Euro::Euro(double i)
    {
    	dmark = i;
    }
    
    ostream& operator<< (ostream& os, Euro& a)
    {
    	return os << (a.dmark / 1.95583);
    }
    
    void main()
    {
    	cout << Euro(10) << endl;
    }
    


  • SkEaToN schrieb:

    habs jetzt mal mit einer klasse realisiert, daran sieht man ganz schön wie die manipulatoren arbeiten:

    aber das ganze muss doch auch als funktion realisierbar sein, nicht nur als klasse, oder?

    class Euro
    {
    public:
    	double dmark;
    	Euro(double i);
    };
    
    Euro::Euro(double i)
    {
    	dmark = i;
    }
    
    ostream& operator<< (ostream& os, Euro& a)
    {
    	return os << (a.dmark / 1.95583);
    }
    
    void main()
    {
    	cout << Euro(10) << endl;
    }
    

    Das ist ne Funktion!:

    ostream& operator<< (ostream& os, Euro& a)
    {
    	return os << (a.dmark / 1.95583);
    }
    

Anmelden zum Antworten