Klasse als Element einer anderen Klasse?



  • Hallo zusammen!

    Beim meinem Problem gehts um folgedes: Ich würde gern eine Klasse als Element einer anderen Klasse verwenden. So, dass zum beispiel die Klasse Linie zwei Elemente V1 und V2 der Klasse Vektor enthält.

    Dafür habe ich ersteinmal stumpf drauflosgeschrieben:

    class Linie
    {
    private:
    	Vektor P1;
    	Vektor P2;
    public:
    	Linie()//das soll mein Konstruktor sein
    	{
    		P1.set_x 2;
    		P2.set_x 3;
    	}
    	Vektor get_P1(void);//und damit soll man auf ein Element zugreifen können
    }
    

    Das geht nicht, weil der Compiler "Vektor" augenscheinlich nicht kennt. Also habe ich noch ein #include "Vektor.h" an den Anfang gestellt und trotzdem läuft es nicht. "error C2011: 'Vektor' : 'class'-Typ-Neudefinition"

    Was mache ich falsch?

    (und als Bonus: wenn ich nichts mir Vererbung mache, ist es dann okay, private statt protected zu benutzen?)

    Gruß

    Dr. Bernd



  • Dr. Bernd schrieb:

    Was mache ich falsch?

    Google: include guards

    Dr. Bernd schrieb:

    (und als Bonus: wenn ich nichts mir Vererbung mache, ist es dann okay, private statt protected zu benutzen?)

    Es ist auch "mi[t] Vererbung" "okay" private zu benutzen. Aber wenn von Linie nicht geerbt wird/werden soll ist private das einzig sinnvolle.



  • Hey, das ist genial! Danke danke danke!

    Hab beides ausprobiert, #include-Guard und #pragma once, beides geht. 🙂
    Endlich funktioniert:

    C.get_P1().get_x();
    

    Gibts vielleicht noch einen Kniff, dass man auf die leeren Klammern verzichten kann oder muss ich mich dran gewöhnen?



  • Äh. Einer Vector oder Line Klasse würde ich einfach public Member verpassen. Ich sehen keinen Grund die Member private zu machen. Wenn du magst natürlich gerne, aber dann musst du auch die schnöden "function-call" Klammern tippseln.



  • Hey, wunderbar. Macht Sinn. Danke!


Anmelden zum Antworten