Methode gibt Zeiger zurück..Aufruf??
-
Hallo, in einer Klasse habe ich folgende Methode:
Class building{
...
...
// Erzeugen eines Rational Objektes und Rückgabe eines Zeiger auf dieses
Rational *produce(int numerator = 0, int denominator = 1)
{
Rational *zahl = new Rational;
*zahl = Rational(numerator,denominator);
return zahl;
}
...
...Wie kann ich diese Methode Aufrufen??
Sie soll ein Objekt Rational erzeugen und einen zeiger darauf zurückgeben?
aus meinem Main Programm will ich den Zeiger abrufen..wie kann ich das machen?
Bekomme nur fehlermeldungen..
Habe in meiner Main Klasse folgendes:Rational *u = new Rational;
u = building.produce();
-
Wenn du eine Methode ohne Objekt aufrufen willst, dann musst du sie static machen, auch wenn mir hier der Sinn ein wenig verschleiert bleibt. Genügt denn nicht ein ordentlicher Konstruktor?
-
das Ganze ist eine Aufgabe.
Man soll eine Klasse Bulidng implementieren, die Rational Objekte zur Laufzeit erzeugen und löschen kann.Sie soll folgende Methhoden haben
Rational Building() -Initialisierung
Rational *produce(int num = 0, int denom =1) zum Erzuegenund noch paar mehr...
Aus meiner separaten Main klasse kann ich diese Methode aber nicht aufrufen..
muss ich sie einfach static machen und dann mit Zeiger = Building.produce(1,1)
aufrufen?
-
also so geht das auch nicht,
in meiner main habe ich jetzt ein variable Building Producer deklariert.
und einen Rational *Zeiger
der Aufruf Zeiger=Producer.produce(3,4)
gibt Fehler
undefinded reference to Building::produce..producer ist jetzt aber static
rufe ich die Funktion mit Zeiger=Building.produce auf gibts ein parse error before '.'
ich hasse es
-
Also es gibt zwei Möglichkeiten:
class building { public: Rational *produce(int nom, int denom) { return new Rational(nom, denom); } }; int main() { building Producer; Rational *Temp = Producer.produce(5,4); //Die Lösung macht nicht viel Sinn, denn genau dafür gibt es Konstruktoren, die genau so eine Aufgabe übernehmen sollen } //Die 2. Lösung (auch Factory genannt) class building { public: static Rational *produce(int nom, int denom) { return new Rational(nom, denom); } }; int main() { Rational *Temp = building.produce(5,4); //Sowas nennt man eine Factory Klasse, die normalerweise noch als Singleton implementiert ist, das bedeutet es gibt nur eine einzige Instanz von ihr! }
Dein Fehler war wahrscheinlich, dass du nicht auf groß- und Kleinschribung geachtet hast!
EDIT:Fehler korrigiert