struct in klasse deklarieren und als typ darauf zugreifen



  • Ich habe versucht eine übung zu machen und zwar eine klasse für vectoren im raum zu schreiben und dabei als Typ für einen Punkt eine struct zu verwenden.

    class MathVector3D{
    
    public:
    	struct Point3D{
    		float x;
    		float y;
    		float z;
    	};
    ...
    ...
    ...
    

    Jedoch wenn ich jetzt darauf zugreifen will wie z.B.:

    MathVector3D vec;
    	vec.Point3D p;
    

    geht das nicht. Wieso?



  • Die Sub-Typen gehören nicht zu einem bestimmten Objekt der übergeordneten Klasse - korrekt sieht das so aus:

    MathVector3D::Point3D p;
    

    PS: Irgendwie macht dein Design nicht viel Sinn - welche Beziehung besteht denn zwischen dem Vektor und dem Punkt?



  • Es hat den Sinn, dass man auch einzelne Punkte dynamisch hinzufügen kann und dann daraus z.B. die Länge aller Strecken zwischen den Punkten rechnen kann. Ich mache was, das wir in schule angefangen haben und der Lehrer ist recht durch den Wind :).
    Deshalb ist es vll. etwas verwirrend aber ich werde diese Klasse auch nie wirklich verwenden. Nur geht es eben um die Übung, weil ich versuche von c# auf c++ umzusteigen und übe deshalb auch gern etwas zu Hause 😃

    Aber danke.


Anmelden zum Antworten