Gleich mehrere Problem (gloables Objekt anlegen, dynamischen Speicher freigeben)

RuFFnEcK

Erfahrenes Mitglied
Hallo zusammen,
ich bin trotz anfänglicher Probleme ein bisschen weiter gekommen!
Hatte hier schon einen Thread wegen dem vector, das läuft jetzt alles wie ich mir das vorgestellt hatte,
nur hab ich eben folgende Probleme:

Der Microsoft Visual C++ .NET erzeugt ja automatisch die Form1.cpp als "Hauptdatei"
Ich möchte (wie schon implementiert) zum Start des Programms aus der Datei die Fragen einlesen,
mittels eines Copy-Konstruktors für jede weitere Instanz nur noch diese Daten kopieren
und nicht neu aus der Datei auslesen!
Soll heißen ich will zu Programmbeginn eine Instanz erzeugen auf die ich im gesamten Programm zugreifen kann...
Ich gebe vor Programm Ende noch den Speicher frei... Ich hoffe dass das soweit richtig ist.
Hier die Form1.cpp:
Code:
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
	System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;
	U_Data *questions = new U_Data();// Bei Programmstart Objekt anlegen und die Fragen-Datei auslesen
	Application::Run(new Form1());
	delete questions;//Freigeben des allozierten Speichers -> Aufruf des Destruktors
	return 0;
}

Im Form1 kann man im mainmenu auf "Neu" klicken und es öffnet sich ein weiteres Form namens "newObject"
Der Aufruf erfolgt folgendermasen, wobei auch hier bin ich mir nicht sicher ob das korrekt ist,
vorallem da ich noch nicht genau weiß wo ich den dynamisch allozierten Speicher wieder freigeben soll...
(Was dann auch gleich meine zweite Frage wäre^^)
Vorallem ist auch kein Destruktor definiert für das Form "newObject", warum generiert der den nicht Automatisch?
Code:
private: System::Void menuItem2_Click(System::Object *  sender, System::EventArgs *  e)
		 {
			newObject *neueUmfrage = new newObject;
			neueUmfrage->Show();
		 }

Zurück zur ersten Frage:
In der Instanz "neueUmfrage" von "newObject" hätte ich jetzt gerne Zugriff auf das in Form 1 initialisierte Objekt "questions"
Ich habe es wie folgt probiert und es klappt net :( :
Code:
#include ".\U_Data.h"

extern U_Data questions;

/*
...standard code...
*/
private: System::Void OK_Click(System::Object *  sender, System::EventArgs *  e)
		 {
			
			 questions->load_quest();//Nur zum testen ob ich Zugriff auf das Objekt hab
		 }

Wie bekomm ich das hin dass ich Zugriff auf das Objekt hab
Ist die Vorgehensweise überhaupt in Ordnung das Objekt vor Erzeugen des HauptForms zu initialisieren?
Wo sollte ich es sonst tun?
Und wie rufe ich aus dem Hauptform am besten andere Forms auf?
In Borland ist das ja kein Problem, aber hier im Visual C++ .Net hab ich schwerwiegende Probleme...

Bin für jede Hilfe dankbar!

Grüsse
RuFF
 
Hallöchen,
kann mir denn keiner helfen?
Ich komm hier echt nicht weiter...
Ist die fragestellung viell. nicht klar
Mir würde schon einfach nur Beispiel Code weiterhelfen!
Ein simples Programm welches zwei Forms verwaltet...
Ich weiss noch nicht so genau wo ich Instanzen von Forms anlegen soll..
Und wenn ich eine Instanz einer Datenklasse erstelle muss ich die dann jedem Form übergeben?
Wenn ja wie?

Und selbst wenn mir dazu keiner Hilfestellungen geben kann, wäre ich dankbar für Bücher die ich mir kaufen kann wo sowas drin erklärt wird^^

Grüsse
RuFF
 
Ich weiss noch nicht so genau wo ich Instanzen von Forms anlegen soll..
Das hängt davon ab, wo du sie brauchst. Ich würde sie jedesmal da erzeugen, wo du sie brauchst und nach Verwendung zerstören. Eine andere Methode wäre es, dass das Hauptfenster bei Programmstart von jedem Formtyp unsichtbar eine Instanz erstellt und bis zum Programmende zur Verwendung bereithält. Bei Bedarf wird dann die entsprechende Form einfach mit Daten gefüttert und sichtbar gemacht.
Und wenn ich eine Instanz einer Datenklasse erstelle muss ich die dann jedem Form übergeben?
Wenn ja wie?
Das kannst du ganz einfach errreichen, indem du den entsprechenden Forms einen Zeiger auf diese Instanz übergibst, zum Beispiel im Konstruktor, wenn das Form neuerstellt wird.

Nebenbei: Welchen Genus hat "Form"? Männchen? Weibchen? Sächelchen? Weiss das jemand?
 
Hallöchen,

Letzendlich kommt man nicht drum herum sich mit Visual .NET auseinander zu setzen...
Hatte dann gesehen dass ich Windows Forms Projekt gestartet hatte und kein MFC Projekt...
Naja hab mir mal Visual Studio .NET in 21 Tagen gezogen, da steht alles drin ;)
Aber es gibt immer Probleme gg

Grüsse
RuFF

Und danke

PS: Ich würd auch sagen das Form^^
 
Zurück