C++ Hilfe!
-
Hallo Leute,
was C++ angeht, bin ich ein Neuling. Deswegen hoffe ich, dass Ihr mir weiter helfen könnt.
Folgende Aufgabe bekomme ich nicht hin, könnt Ihr mit vielleicht helfen?Erweitern Sie die Klasse A derart, dass sich folgendes Programm übersetzen lässt und die Ausgabe:
3.1415
3
erzeugt.#include <iostream> using namespace std; class A{ public: A(float f) : m_f(f) {} private: float m_f; }; void test(int i){ cout << i << endl; } int main(){ A a(3.1415); cout << a << endl; test(a); return 0; }
-
Sicher können wir helfen, aber was ist deine Frage, woran hängst du?
-
ich weiß nicht wie ich die Aufgabe angehen soll.
Typkonvertierung?
-
Warum lässt sich das Programm nicht übersetzen?
Was hast du in der letzten Unterrichtsstunde gelernt?
-
er kann meine Klasse A nicht in ein int konvertieren. Laut ausgabe.
Bin einfach auf dem Schlauch.
-
Operatorüberladung: Müsstest du in der letzten Unterrichtseinheit gelernt haben.
-
Dieser Beitrag wurde gelöscht!
-
@kelbssohn sagte in C++ Hilfe!:
er kann meine Klasse A nicht in ein int konvertieren. Laut ausgabe.
Das ist der zweite Fehler. Den könnte man mit einer Typkonvertierung lösen. Was passiert dann? Lässt sich das lösen?
-
Dieser Beitrag wurde gelöscht!
-
Ich hab's Danke schön an euch
#include <iostream> using namespace std; class A{ friend void test(); public: A(float f) : m_f(f) {} friend ostream& operator<<(ostream& os, const A& crArg){ return os<<crArg.m_f; } operator int() const{ return m_f; } private: float m_f; }; void test(int i){ cout << i << endl; } int main(){ A a(3.1415); cout << a << endl; test((int)a); return 0; }
-
Warum ist
test()
ein Freund vonA
?@kelbssohn sagte in C++ Hilfe!:
test((int)a);
Der C-Style Cast ist überflüssig.
-
int main(){ cout << "3.1415" << endl; cout << "3" << endl; return 0; }
-
@tggc Das löst die Aufgabe "Erweitern Sie die Klasse A derart...." nicht!
-
Also soll nur A verändert werden?
using A = float;
-scnr-