Virtual Frage
-
Ich bin mir noch nicht sicher, wie genau die Daten in ein Objekt hineingelangen sollen, deshalb schien mir eine Abstrakte Klasse ('Quelle') sinnvoll.
class Quelle; // Damit wenigstens ein Zeiger im Konstruktor von Objekt // verwendet werden kann; class Objekt{ int x,y; public: Objekt(int a, int b):x(a),y(b){} Objekt(Quelle* src){ *this=src->get(); // Mit diesem Konstruktor erhoffte ich mir, // das Objekt auch aus einer beliebigen Datenquelle erzeugen zu können, // aber src->get() ist dem Compiler nicht bekannt? Wie löst man das? } }; // Hier die Definition von Quelle: class Quelle{ public: virtual Objekt get()=0; }; // Also noch nichts Konkretes, // deshalb abgeleitet zu beispielsweise: class Tastatur:public Quelle{ public: Objekt get(){ // Hier wird doch die virtuelle Funktion überladen, oder? // Leider kennt der Konstruktor von Objekt dieses Funktion nicht! Was tun? int a,b; scanf("%d%d",&a,&b); return Objekt(a,b); // So und das sollte nach meiner Theorie dem // Konstruktor von Objekt (der mit dem Quelle* Zeiger als Parameter) // ermöglichen, ein Objekt durch eine Tastatureingabe zu erzeugen. // Das klappt aber nicht so recht? } };Vielleicht fällt jemandem eine Lösung für mein Problem ein, dass man sowohl 'Objekt' die Existenz von 'Quelle' bekannt machen muss, als auch umgekehrt!
In welcher Reihenfolge soll ich was deklarieren/definieren?Danke für Tipps!
-
Implementiere die Memberfunktionen ausserhalb der Klasse.
-
groovemaster schrieb:
Implementiere die Memberfunktionen ausserhalb der Klasse.
Thx klappt jetzt (halbwegs)!