Klasse in Klasse
-
Hallo, ich schreibe gerade ein kleines Mathe Programm.
Nun möchte ich eine Klasse schreiben mit name Math. Alle Formeln sollen
eine eigene Klasse bekommen. Das ist alles kein Problem. Nun sollen alle Formeln
in die Klasse Math. In der Main will ich dann nur Math aufrufen und die Formeln dann soMath.Formel.berechnen();Ich werde dann wohl jede Klasse in die Klasse Math rein schreiben aber das ist ja total unübersichtlich. Ich hab dann das hier versucht
class Math { class Formel; };Aber wie rufe ich die Klasse außerhalb auf ?
-
Hat es einen bestimmten Grund, warum die Formel-Klassen innere Klassen von Math sein sollen? Wenn nicht (bzw. wenn es nur der Übersicht dienen soll), benutz doch einfach einen eigenen Namespace für deine Formeln.
-
Zur Syntax:
"." ist der Memberauflösungsoperator. Damit könntest du Member eines (konkreten!) Math-Objektes ansprechen.
"::" ist der Bereichsauflöseoperator. Damit kannst du Dinge innerhalb von Klassen und Namespaces ansprechen.
-
OK ich denke das mit namespace ist ne gute Idee. Ich wollte halt nicht jede Klasse einzelnd aufrufen also
Formel1 formel1
Formel2 formel2
Formel3 formel3Ich wollte alles mit einer Klasse aufrufen
-
Eine Formel als Klasse zu modellieren ist eher ungewöhnlich.
-
Wäre natürlich auch denkbar, à la Java eine Klasse Math mit statischen Methoden für die verschiedenen Formeln zu basteln. Ob das jetzt so sinnvoll ist, sei mal dahingestellt.
-
Dein Vorhaben macht leider so gar keinen Sinn. Wie willst du z.B. den Formeln die Parameter übergeben? Einige Formeln benötigen mehr Parameter, als andere Formeln...
Einige Formeln bringen keine eindeutige Lösung, sondern liefern mehrere mögliche Lösungen.
Du stößt damit an jeder Ecke an und kommst nicht voran.
#include <iostream> class Formel { public: int berechnen() { return 1337; } }; class Math { public: static Formel Formel1; }; Formel Math::formel1; int main() { std::cout << Math::Formel1.berechnen() << std::endl; return 0; }