Vektor-Klasse



  • // Vektor Klasse
    
    public __gc class Vektor {
    
    		public:
    			Double y, x, z;
    		public:
    			Vektor();
    			Vektor(Double y, Double x, Double z);	
    			Vektor(String __gc* strVektor); // "(123.23,1232.23,4235345.)"
    			String __gc* ToStr();
    };
    
    // 2. Klasse->Methoden
    ... getRotation(...);
    void setRotation(...);
    

    In dieser Klasse will ich die Werte in den Vektor schreiben/lesen.
    Wie müssen die Methoden dazu aussehen?



  • Vector v(0,0,7);//initialisiert einen Vector
    
    v.x=100;//x-Wert ändern
    if(v.z!=0)//z-Wert abfragen
      cout<<"nicht auf Bodenebene\n";
    ...
    

    (die Elemente von Vektor sind "public", also kannst du sie auch direkt nutzen)



  • // Vektor Klasse
    public __gc class Vektor {
    
    		private:
    			Double y, x, z;
    		public:
    			Vektor();
    			Vektor(Double y, Double x, Double z);
    
    			Vektor(String __gc* strVektor); // "(123.23,1232.23,4235345.)"
    			String __gc* ToStr()
    String __gc* Vektor::ToStr() {
    		String* vec = String::Concat(S"(", y.ToString(), x.ToString(), z.ToString(), S")");
    		return vec;
    }
    			void setVektor();
    	};
    
    // 2. Klasse
    public __gc class 2.Klasse {
    
    private:
    
    			Double pitch, yaw, roll;
    			Vektor __gc* rotation;
    
    public:
    
    String* getRotation(){
    		return rotation->ToStr();
    	}
    void setRotation(Double pitch, Double yaw, Double roll){
    
    		Vektor* vec3d = new Vektor(pitch, yaw, roll);
    	}
    };
    

    Komme hier nicht weiter. Das Problem hab ich mit der Übergabe an die Rotation-Methode. WEiß nicht, wie ich da vorgehen soll..



  • (am Rande: Glaubst du wirklich, daß du Namen wie "1.Klasse" durch den Compiler bekommst?)

    OK, zu deinem eigentlichen Problem: Du erzeugst in der setRotation()-Methode einen neuen Vektor, den du gleich wieder vergisst - das ergibt erstens ein mögliches Speicherleck und bringt dir zweitens nicht sehr viel, da du diesen Vektor noch benötigst. Richtig müsste es so aussehen:

    class Klasse1
    {
    private:
      Vector rotation;
    public:
      void setRotation(Double p,Double y,Double r)
      { rotation=Vektor(p,y,r); }
      String* getRotation()
      { return rotation.toStr(); }
    };
    

    PS: Was für eine Sprache ist das eigentlich? Bestimmt kein reines C++



  • (am Rande: Glaubst du wirklich, daß du Namen wie "1.Klasse" durch den Compiler bekommst?)

    Ne, war auch nur hier skizzenhaft geschrieben.

    PS: Was für eine Sprache ist das eigentlich? Bestimmt kein reines C++

    .NET Framework -> Managed C++
    Deshalb auch die seltsamen Pointer und Stringsbehandlung...


Anmelden zum Antworten