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?


Anmelden zum Antworten