[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 kenntdarauf 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:
-
danke dir knuddlbaer
du hast mir den entscheidenen Hinweis gegeben
auch vielen Dank an alle anderen für Ihre GeduldDer 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