Verwalteter String in Klasse
-
theta schrieb:
Könnt ihr mir sagen warum das nicht funktioniert ?
Weil name eine managed referenz ist:
gvar->name = "dername";
Simon
Nein,
gvar.name = "dername"
ist korrekt. C++/CLI erlaubt die direkte Deklaration von Variablen vom Typ einer reference class ohne reference inklusive der dazugehörigen Semantik. Das Problem vielmehr dort zu suchen, WO er deklariert. Findet diese Deklaration auf global scope oder innerhalb einer Funktion statt? Mehr Code wäre nützlichUnd was soll dieses
g_variablen(void)
? Nimm eventuell mal dasvoid
raus.MfG
-
/rant/ schrieb:
theta schrieb:
Könnt ihr mir sagen warum das nicht funktioniert ?
Weil name eine managed referenz ist:
gvar->name = "dername";
Simon
Nein,
gvar.name = "dername"
ist korrekt. C++/CLI erlaubt die direkte Deklaration von Variablen vom Typ einer reference class ohne reference inklusive der dazugehörigen Semantik. Das Problem vielmehr dort zu suchen, WO er deklariert. Findet diese Deklaration auf global scope oder innerhalb einer Funktion statt? Mehr Code wäre nützlichUnd was soll dieses
g_variablen(void)
? Nimm eventuell mal dasvoid
raus.MfG
Jupp korrekt. Habe schlecht hingeguckt.
-
Also ich hab den Code / das Projekt jetzt mal hochgeladen. Hier könnt ihr es runterladen:
- http://s195130324.online.de/code.zip
Danke,
mfg arena_blau
-
Könnt ihr mir sagen warum das nicht funktioniert ?
Sag mal was nicht geht.
Poste den code, ich lad den nicht runter.
Simon
-
Done. Du hast einfach den Namensraum nicht importiert, der Compiler kennt natürlich keine String Klasse. Es muss darum heissen:
#pragma once ref class g_variablen { public: g_variablen(void); int x; int y; // System::String ;-) System::String ^ name; };
Und alles kompiliert^^
Sag mal was nicht geht.
Poste den code, ich lad den nicht runter.
SimonWindows Viren machen mir nix mehr aus :p
MfG
-
Es ist einfach zuviel Aufwand, nicht wegen den Vieren, die machen mir auch nichts.
Simon
-
Du hast einfach den Namensraum nicht importiert
Du hast recht, darum hats nicht funktioniert. Jetzt funktioniert es.
Danke nochmal für eure Hilfe.In der ZIP-Datei sind übrigens keine Viren enthalten. Ich wollte den Code nur nicht hier ins Forum stellen, da ich dachte, dass dies zu unübersichtlich wäre.
Aber ich merks mir für meinen nächsten Beitrag.Danke,
mfg arena_blau-------
-
Hallo,
so, eine Frage hab ich jetzt noch.Wenn ich in einem button1_Click-Ereignis eine Instanz einer Klasse anlege,
dann wird diese Instanz wieder gelöscht, sobald die Ereignisprozedur verlassen wird. Hier ein Beispiel:private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { g_variablen gvar; gvar.x = 10; gvar.y = 20; }
Doch wie kann ich dies verhindern ?
Die Instanz der Klasse soll also einmal angelegt werden, und dann so lange aktiv bleiben bis das Programm beendet wird.
Habt ihr ne Idee wie man das macht ?
Danke,
mfg arena_blau------------------------
-
Doch wie kann ich dies verhindern ?
Du musst gvar als Member der Klasse machen.
ref class Form1 : .... { private: g_variablen gvar; private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { gvar.x = 10; gvar.y = 20; } };
Simon
Edit:
Die Instanz der Klasse soll also einmal angelegt werden, und dann so lange aktiv bleiben bis das Programm beendet wird.
Im obigen Bsp. lebt gvar solange wie die Instanz der Form1 Klasse.
-
Hallo,
es funktioniert, DANKE.