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.Klassesollte einen besseren Namen haben.
Wenn dann eine Instanz vonForm1hast z.B.:form1, rufst du das auf mitform1->Controls->Add(/*...*/1).
Jedoch sollte ausschließlichForm1ihre 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...