Form-Objekt ändern



  • Hallo!

    Bin noch relativ neu in C++. Ich möchte dem Fenster über die Methode einer anderen Klasse einen Button (oder auch etwas anderes) hinzuzufügen. In der Form1.h Datei wird das ja so gemacht

    this->Controls->Add(this->button1);
    

    Aber wie mache ich das in der Methode der anderen Klasse? Hier der Quelltext dazu (cpp-Datei):

    #include "Form1.h"
    #include "Klasse.h"
    
    void Klasse::InitializeGame()
    {
    	//Button hinzufügen
    }
    


  • Das ist nicht C++, das ist C++/CLI und doof 🙄. Siehe den Sticker in diesem Unterforum http://www.c-plusplus.net/forum/263084.

    Klasse sollte einen besseren Namen haben.
    Wenn dann eine Instanz von Form1 hast z.B.: form1 , rufst du das auf mit form1->Controls->Add(/*...*/1) .
    Jedoch sollte ausschließlich Form1 ihre Oberfläche verändern können und keine andere Klassen.



  • In meinem Programm heißt die "Klasse" natürlich anders 😉 Mit "Klasse" ist es nur ein bisschen verständlicher. ^^ Muss ich die Instanz in der main-Funktion erstellen?

    Wenn ich nach dem Konstruktor die Instanz erstelle:

    static Form1 ^ win = gcnew Form1();
    

    erkennt die Methode

    Application::Run(win);
    

    die win Instanz nicht. 🙄



  • Ah, hab vergessen darauf zu verweisen, dass win eine Instanz der Klasse "Form1" ist. 😃 "Form1::" hinzugeschrieben, jetzt geht es. Danke für die Hilfe. 🙂



  • Was soll das static? Das ist unnötig!



  • theta schrieb:

    Was soll das static? Das ist unnötig!

    Naja, so unnötig kann das ja nicht sein, wenn ich ohne das "static" maßenhaft Fehlermeldungen kassiere. 😃



  • Taeli schrieb:

    theta schrieb:

    Was soll das static? Das ist unnötig!

    Naja, so unnötig kann das ja nicht sein, wenn ich ohne das "static" maßenhaft Fehlermeldungen kassiere. 😃

    doch doch.



  • doch doch.[/quote]

    Fehler	1	error C3845: "Projekt::Form1::fenster": Nur statische Datenmember können innerhalb einer Verweisklasse oder eines Werttyps initialisiert werden.
    Fehler	2	error C2597: Ungültiger Verweis auf nicht-statischen Member 'Projekt::Form1::fenster'
    

    Hätte ich die Instanz noch woanders verwendet, wär der Fehlertext noch viel länger... Das war aber nur einmal eine Demonstration. 😉



  • Ja, dann zeig einfach mal den Code drum herum...


Anmelden zum Antworten