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 vonForm1
hast z.B.:form1
, rufst du das auf mitform1->Controls->Add(/*...*/1)
.
Jedoch sollte ausschließlichForm1
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...