MFC & STL



  • Natürlich geht das nicht... 🙄
    Variablen werden nun mal im Konstruktor konstruiert,
    und nicht vorher schon. Du müsstest also die Klammern weglassen.

    Devil



  • Den notwendigen header <vector> hast du hoffentlich includiert.
    Und wenn du nicht "using namespace std" verwendest schreibst du
    natürlich std::vector. 😉

    Das sind aber Sachen die nicht in erster Linie was mit STL sondern mit C++ zu tun haben. 🙄

    mfg JJ



  • Also:

    CSDIFrameDoc::CSDIFrameDoc()
    {
    	// ZU ERLEDIGEN: Hier Code für One-Time-Konstruktion einfügen
    
    	using namespace std;
    	vector< vector< vector< vector<double> > > > animData(timeSteps);
    }
    

    Okay, das läuft.

    void CSDIFrameDoc::Serialize(CArchive& ar)
    {
    using namespace std;
    ...
    animData[i].resize(elements);
    ...
    }
    

    Das läuft nicht. animData ist jetzt ein nichtdeklarierter Bezeichner.
    Gab's da nicht was mit this-> ...?



  • Du arbeitest also mit der MFC, welche ja praktisch nur auf Objekten besteht und hast keine Ahnung von OOP in C++ 😮

    Du _initialisierst_ die Membervariablen deiner _Klasse_ im _Konstruktor_

    so:

    foo
    {
        public:
        //Konstruktor
        foo ()
        {
            //Initialisieren
            i = 12;
        }
    
        private:
        //Membervariable von foo
        int i;
    }
    


  • ... aus Objekten ... 😉

    Hast ja recht - ich habe mal eine C-Vorlesung gehört und ein MFC-Tutorial gelesen. Dafür klappt's aber ganz gut.

    "Keine Ahnung" finde ich etwas übertrieben - sagen wir, (un)gesundes Halbwissen. Sitze erst seit ca. 3 Wochen vor der OOP mit der MFC - da werden doch Wissenslücken erlaubt sein, oder?

    Werde mit den erhaltenen Tips mal ein paar Bücher konsultieren - wir reden irgendwie auf verschiedenen Ebenen... Aber danke schonmal.



  • Also wenn ich deine Fragen/Antworten so sehe kann ich nicht glauben das es gut
    läuft 😮
    Das muss daran liegen das du bisher deine von Wizards generierten Programme
    mit nur marginalen Änderungen unverändert übernommen hast 😃 Das du weisst was in dem generierten Code wirklich abgeht bezweifle ich stark. So schön sich das anlässt, fällt das ganze (offentsichtlich) schon bei Trivialitäten auseinander 😞

    mfg JJ



  • Evtl. wär mal n tut angebracht, damit du mal die Grundstrukturen von C++ verstehst:
    http://schornboeck.net/ckurs/inhalt.htm



  • einen wunderschönen...
    wenn ich mich mal einklinken darf... Ich habe gerade dasselbe Problem mit einem Vektor, den ich öffentlich deklariere. Ich bekomme leider auch die Fehlermeldung 'nicht deklarierter Bez.'.

    Ich hab in beiden Dateien <vector> inkludiert.

    c_IdentityDlg.h

    class c_IdentityDlg : public CDialog
    {
    ...
    public:
    std::vector <CString> vect;
    
    ...
    };
    

    c_IdentityDlg.cpp

    ...
    	for(int i=0;i<vect.size();i++)
    	{		
    		lvItem.iItem = i;
    		lvItem.pszText = vect[i].GetBuffer(vect[i].GetLength());
    		pLC->InsertItem(&lvItem);
    	}
    

    ich mach da wohl auch was falsch ?!
    😕



  • SirLant schrieb:

    Du arbeitest also mit der MFC, welche ja praktisch nur auf Objekten besteht und hast keine Ahnung von OOP in C++ 😮

    Wenn ich hier nicht im MFC-Forum wäre dann würde ich das kommentieren, aber so lasse ich es lieber... 🤡

    Du _initialisierst_ die Membervariablen deiner _Klasse_ im _Konstruktor_

    so:

    foo
    {
        public:
        //Konstruktor
        foo ()
        {
            //Initialisieren
            i = 12;
        }
    
        private:
        //Membervariable von foo
        int i;
    }
    

    Eigentlich wäre es ja in der Initialisierungsliste wesentlich besser:

    class bar
    {
    public:
        bar()
        :i(12) {}
    private:
        int i;
    };
    


  • nman schrieb:

    Eigentlich wäre es ja in der Initialisierungsliste wesentlich besser:

    class bar
    {
    public:
        bar()
        :i(12) {}
    private:
        int i;
    };
    

    Wenn ich hier nicht im MFC-Forum wäre dann würde ich das kommentieren, aber so lasse ich es lieber... 🤡 :p

    Erwarte von den MFC'lern net, das sie C++ können 😉



  • Sorry, mein Beitrag war wohl überflüssig. Hatte tatsächlich einen falschen Bezeichner, einen Buchstaben zu viel. (ist schon spät... geh jetzt lieber pennen bevor ich noch mehr Code verhunze und unnötige Beiträge schreibe ) 😃

    Gude nacht allerseits!



  • nman schrieb:

    SirLant schrieb:

    Du arbeitest also mit der MFC, welche ja praktisch nur auf Objekten besteht und hast keine Ahnung von OOP in C++ 😮

    Wenn ich hier nicht im MFC-Forum wäre dann würde ich das kommentieren, aber so lasse ich es lieber... 🤡

    Wieso denn? Ich hab doch extra Objekte im Zusammenhang mit MFC geschrieben und nicht OOP 🤡


Anmelden zum Antworten