[erledigt]von einer selbsterstellten Klasse auf eine form zugreifen



  • danke asc für die hilfe das hab ich jetzt zumindest verstanden.

    jedoch wenn ich das umsetzen möchte bekomme ich folgenden Fehler:

    XYZ.h(7) : error C2143: Syntaxfehler: Es fehlt ';' vor '^'
    

    und das ist mein Code

    #pragma once
    #include "Form1.h"
    
    ref class XYZ
    {
    private:
    	Form1^ form;
    public:
    
    	XYZ(void);
    	void test(void);
    	void form1_zuweisen(Form1^ form);
    
    };
    


  • Posthorn schrieb:

    jedoch wenn ich das umsetzen möchte bekomme ich folgenden Fehler:

    Ich rate jetzt einfach mal wild drauf los:
    a) Heißt deine Form vielleicht anders?
    b) Ist am Ende der Formklasse ein Semikolon gesetzt wurden?

    cu André



  • a) Heißt deine Form vielleicht anders?

    nicht das ich wüßte 😞 zur sicherheit mal meine form1.h gekürzt auf den anfangsbereich.

    namespace Test_prog {
    .......
    
    public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    ...........
    

    b) Ist am Ende der Formklasse ein Semikolon gesetzt wurden?

    ja das ist gemacht wurden

    };
    }
    


  • Posthorn schrieb:

    nicht das ich wüßte 😞 zur sicherheit mal meine form1.h gekürzt auf den anfangsbereich.

    Wenn deine andere Klasse nicht im gleichen Namensraum liegt musst du diesen auch mit angeben.

    Schreib in deiner Klasse XYZ mal statt "Form1" "Test_prog::Form1".



  • das hatte ich auch schon probiert jedoch gibts auch dabei eine fehlermeldung

    error C2653: 'Test_prog': Keine Klasse oder Namespace
    

    😞 das kann doch nicht so kompliziert sein oder ?? 😞



  • Prüfe auf rekursive Includes. Includiert Form1.h z.B. xyz.h ?



  • du hattest recht vielen dank nachdem ich in der Form1.h den include auf die XYZ.h rausgenommen habe kompiliert er dann ohne probleme aber wie schaffe ich dann den zugriff auf meine klasse in XYZ.h ?? denn sobald ich die ja wieder include habe ich dann wieder das alte problem 😞 danke für eure geduld



  • Google/suche mal nach Vorwärtsdeklaration



  • Doug_HH schrieb:

    Du musst auch die Form1.h in Form2.cpp (die Form die auf Form1 zugreift) inkludieren.

    Gruß Doug_HH



  • Knuddlbaer schrieb:

    Google/suche mal nach Vorwärtsdeklaration

    ok vielen dank für den tipp leider habe ich da nur dürftige informationen gefunden und will mal beschreiben wie ich das aufgefasst habe 🙂

    wenn ich also von der form1.h auf meine klasse in XYZ.h zugreifen möchte muß ich diese Klasse mit

    ref class XYZ;
    

    bekannt machen. (ref deswegen da es ja CLR code ist richtig ??)

    wenn ich das dann versuche zu kompilieren bekomme ich aber die Fehlermeldung :

    error C2512: 'XYZ': Kein geeigneter Standardkonstruktor verfügbar
    

    was ja soweit verständlich ist da ich ja die XYZ nicht include.
    aber setze ich dann nach der Vorwärtsdeklaration wieder das #include "XYZ.h"; bekomme ich wieder die alte fehlermeldung das er die Form nicht kennt 😞

    darauf bin ich auf die Idee gekommen das ich doch noch eine vorwärstdeklaration in die XYZ.h auf die klasse form1 machen könnte. Leider spuckt mir dann der compiler ne ganze menge mehr fehlermeldungen aus die meine XYZ.cpp betreffen:

    error C2027: Verwendung des undefinierten Typs "XYZ"
    

    .
    .
    .
    .

    😞 das verwiirt mich alles ^^ bitte helft mir nocheinmal 🙂

    danke schon einmal im vorraus.

    EDIT: wieso wird v o r r a u s vom Schimpfwortfilter mit sternchen versehen ??? :p



  • Posthorn schrieb:

    EDIT: wieso wird v o r r a u s vom Schimpfwortfilter mit sternchen versehen ??? :p

    Weil es das Wort nicht gibt. Es heißt "voraus".



  • Mal ein gaaanz kleines Beispiel:

    http://www.rothmichael.de/cpp/237183.zip



  • danke dir knuddlbaer 🙂 du hast mir den entscheidenen Hinweis gegeben 🙂
    auch vielen Dank an alle anderen für Ihre Geduld 🙂

    Der Fehler der mir so kopfzerbrechen bereitet hat ist beinahe schon zu peinlich um ihn hier zu schreiben 😉 aber ich bin halt noch anfänger 🙂

    ich habe nicht die deklaration von der Definition getrennt :p

    nun um anderen zu helfen stelle ich mal das projekt online 😉 um das Grundprinzip zu verstehen und im Bezug auf eine Form ein Beispiel zu haben 🙂 evtl kanns ja jemand als Hilfestellung gebrauchen 🙂

    http://lotto-wissen.de/opendownload/von_einer_selbsterstellten_Klasse_auf_eine_Form_zugreifen.rar

    MFG


Anmelden zum Antworten