Aigene Form als Parameter an Klassenkonstruktor übergeben
-
Hallo
Ich habe einen kleinen Dialog mit TextBoxen. beim drücken des Go Buttons sollen
die eingaben an eine Klasse übergeben werdde, die diese eingaben dann hält.
nun meine Frage : wie kan ich den kompletten dialog meinem Konstruktor übergeben?Ich habs so probiert
class CHalteDaten{ CHalteDaten(dialogForm^ meinDialog) }; CHalteDaten(dialogForm^ meinDialog) { this->date=meinDialog->textbox->TExt..... }
klappt aber nicht
was mach ich falsch?
vielen dank im vorraus
-
Was hast Du genau vor?
Der Konstruktorcode könnte so aussehen.
String^ lifereAdresse() { return textBox1->Text; }
Und die Übernahme so.
//wurde die Schaltfläche Öffnen angeklickt? if (oeffnenForm->DialogResult == ::DialogResult::OK) { //die Adresse über die Methode im Öffnen-Formular beschaffen adresse = oeffnenForm->lifereAdresse(); webBrowser1->Navigate(adresse); //das zweit Formular wieder schließen oeffnenForm->Close(); }
Hoffe das hilft Dir?
Gruß Doug_HH
-
Danke für die Antwort: Ja sowas hab ich gesucht "g"
Ich hab jetzt das problem, dass ich in meiner cpp und hpp viele fehlermeldungen bekomme:
muss ich in einer nicht .Net cpp /h auch die ^ Syntax verwenden?Das ist meine Klasse die probleme macht
class CProject { private: //Membervariablen // double width; double height; public: //Konstruktor // CProject(); CProject(String^ width); };
und in der c++ hab ioch den Konstruktor definiert:
CProject::CProject(String^ width) { this->width = width; }
In der Form datei mach ich mir ein CProject by Click eines Buttons der Form:
private: System::Void getNewProjectStartSettings(System::Object^ sender, System::EventArgs^ e) { CProject^ prj = gcnew CProject(this->liefereAdresse()); }
liefere Adresse ist auch in der Form definiert wie du geschrieben hast
String^ liefereAdresse(){ return tbWidth->Text; }
und das sind die fehlermeldungen:
1>------ Erstellen gestartet: Projekt: Projekt1, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>Projekt1.cpp 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C2143: Syntaxfehler: Es fehlt ')' vor '^' 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C2143: Syntaxfehler: Es fehlt ';' vor '^' 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C2460: 'CProject::String': Verwendet gerade definiertes 'CProject' 1> c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(9): Siehe Deklaration von 'CProject' 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C2059: Syntaxfehler: ')' 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C3265: Ein verwalteter 'width' kann nicht in einem nicht verwalteten 'CProject' deklariert werden 1> Eine globale oder statische Variable oder ein Member eines systemeigenen Typs, der auf Objekte im gc-Heap verweist, kann nicht deklariert werden. 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\FormNewProjectDialog.h(202) : error C3699: "^": Diese Referenzierung kann nicht für den Typ "CProject" verwendet werden. 1> Der Compiler ersetzt "^" durch *", um die Analyse fortzusetzen. 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\FormNewProjectDialog.h(202) : error C2726: "gcnew" kann nur zum Erstellen eines Objekts mit verwaltetem Typ verwendet werden. 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\FormNewProjectDialog.h(202) : error C2664: 'CProject::CProject(const CProject &)': Konvertierung des Parameters 1 von 'System::String ^' in 'const CProject &' nicht möglich 1> Ursache: Konvertierung von 'System::String ^' in 'const CProject' nicht möglich 1> Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden 1>funktions.cpp 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C2143: Syntaxfehler: Es fehlt ')' vor '^' 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C2143: Syntaxfehler: Es fehlt ';' vor '^' 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C2460: 'CProject::String': Verwendet gerade definiertes 'CProject' 1> c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(9): Siehe Deklaration von 'CProject' 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C2059: Syntaxfehler: ')' 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\functions.h(20) : error C3265: Ein verwalteter 'width' kann nicht in einem nicht verwalteten 'CProject' deklariert werden 1> Eine globale oder statische Variable oder ein Member eines systemeigenen Typs, der auf Objekte im gc-Heap verweist, kann nicht deklariert werden. 1>.\funktions.cpp(19) : error C2597: Ungültiger Verweis auf nicht-statischen Member 'CProject::String' 1>.\funktions.cpp(19) : error C2597: Ungültiger Verweis auf nicht-statischen Member 'CProject::width' 1>.\funktions.cpp(19) : error C2568: '^': Auflösung der Funktionsüberladung nicht möglich 1> Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen. 1>FormNewProjectDialog.cpp 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\FormNewProjectDialog.h(202) : error C2065: 'CProject': nichtdeklarierter Bezeichner 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\FormNewProjectDialog.h(202) : error C2065: 'prj': nichtdeklarierter Bezeichner 1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\FormNewProjectDialog.h(202) : error C2061: Syntaxfehler: Bezeichner 'CProject' 1>Code wird generiert... 1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Ich\Eigene Dateien\Visual Studio 2005\Projects\Projekt1\Projekt1\Debug\BuildLog.htm" gespeichert. 1>Projekt1 - 21 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Brächte da dringend hilfe "g"
-
rolandrevolvermann schrieb:
muss ich in einer nicht .Net cpp /h auch die ^ Syntax verwenden?
Nein, mußt (und darfst) du nicht - das ^ exisitiert außerhalb von C++/CLI nicht (zumindest nicht in dieser Bedeutung), da mußt du normale Zeiger (mit * Syntax) oder Referenzen verwenden.
-
ok nochmal zum verständnis:
sobald ich in einer windows form bin gilt: zeiger = ^ .
?
-
wenn ich jetzt die zeiger in meiner .h und .cpp von ^ in * ändere ersetzt der Kompiler * zu ^ ...
bin etwas ratlos
-
System::String* width; das mag er nicht, aber wie soll ichs dann schreiben?