public: vector<..> unbrauchbar?



  • Hi Miteinander,
    Ich habe Probleme beim programmieren. Und zwar geht es darum, dass ich auf
    eine bestimmte Variable nicht zugreifen kann. Wenn mir jemand das möglichst genau beschreiben kann wäre ich sehr dankbar, weil ich ein relativer Anfänger bin

    struct F3DSCurvePoint{
    	double m_adXYZ[3];
    	double m_adNormal[3];
    };
    struct F3DSCurve{
            vector<F3DSCurvePoint> m_curvePoints;
    };
    public:
            vector<F3DSCurve> m_curves;
    
    F3DSCurvePoint curvePoint;
    F3DSCurve actCurve;
    vector<F3DSCurve> curves;    //Lokal, nur so zum testen
    
    actCurve.m_curvePoints.push_back(curvePoint); //geht
    
    //Beim Lokal definierten geht es ohne weiteres
    curves.push_back(actCurve);
    
    m_curves.push_back(actCurve); // Fehler?????
    

    Bei m_curves, der in .h definiert ist, schmeisst er mir
    ein Unhandled Exception.

    Eigentlich kann ich mit m_curves gar nichts machen, weder push_back, noch
    resize, noch empty,... gar nichts. Jedesmal Unhandled Exception. Im
    header-file selber ist noch inline-fkt. Sogar dort bringt er den Fehler, wenn ich auf m_curves zugreifen will.

    Ich hoffe jemand kennst das Problem, und hat eine genauere Lösung für mich. Ich probiers nämlich zum dritten mal 😞



  • Der Code

    struct F3DSCurvePoint{
        double m_adXYZ[3];
        double m_adNormal[3];
    };
    struct F3DSCurve{
            vector<F3DSCurvePoint> m_curvePoints;
    };
    public:
            vector<F3DSCurve> m_curves;
    

    hat ueberhaupt gar keinen Sinn. Du kannst nicht irgendwo in eine Headerdatei
    ein

    public: <vars>

    schreiben. Wenn du eine globale Variable haben willst, dann schreibst du in
    der Header folgendes:

    //headerdatei
    extern vector<F3DSCurve> m_curves;
    //in der ue dann
    vector<F3DSCurve> m_curves;
    

    mfg
    v R



  • Medeni schrieb:

    m_curves.push_back(actCurve); // Fehler?????[/cpp]

    Da fehlt doch was, oder hast du ein Objekt, dass m_curves heißt (was ziemlich doof wäre, denn das m_... sollte ja eigentlich bedeuten, dass das Objekt ein Classmember ist)?
    Ansonsten siehe v R



  • Was tut "extern"? und was bedeutet ue



  • Medeni schrieb:

    Was tut "extern"? und was bedeutet ue

    Als UE bezeichnet man eine Uebersetzungseinheit (Implementationsdatei *.cpp oder
    *.cxx).

    extern sagt dem Compiler, dass es irgendwo im Aktuellen Projekt bzw. in den an
    den Compiler zum uebersetzen uebergebenen UE's eine Variable gibt, welche mit
    extern deklariert worden ist. Der Compiler sucht dann selbstaendig nach dieser,
    kann sie nicht gefunden werden, dann bekommst du vom Linker einen fehler (sprich,
    wenn sie in keiner angegebenen UE definiert worden ist).

    mfg
    v R



  • Hallo,

    mal rein interessenmäßig: Wenn du solche Grundbegriffe nicht kennst, dann könnte dein Beispiel u. U. eine Nummer zu hoch gegriffen sein?! Vielleicht solltest du dich erstmal mit den grundlegensten Sachen vertraut machen und/oder ein Tutorial durcharbeiten.


Log in to reply