Fehler: gemischte Datentypen werden nicht unterstützt??
-
Hallo
Also ich bin ein C++ .NET Windows Forms Anfänger, und komme auf folgenden Fehlergrund nicht drauf:
Ich habe eine Windows Form Klasse dekleriert:
public ref class MeineKlasse{ etc. };
diese funktioniert alleine einwandfrei. Ich will jetzt eine Normale Klasse hinzufügen:
class Test{ public: Test(){}; int i; etc... }; public ref class MeineKlasse{ Test t; etc. };
Jetzt kommt die Fehlermeldung "gemischte Datentypen werden nicht unterstützt". Meine Frage lautet also wie ich diese Klasse Test in meiner Formsklasse einfügen kann. In meinen realen Fall habe ich eine sehr komplizierte Logik in normalen klassen geschrieben (damals in Konsolenanwendung), die ich jetzt gerne in ein Benutzerbedienelement einfügen würde. Jedoch kann ich keine Instanz meiner Klassen machne, was mich zur verzweiflung bringt.
Danke für eine rasche antwort
-
Du musst einen Pointer verwenden auf Test, dann geht es. In Managed-Klassen sind wohl keine statischen Objekte erlaubt:
class Test{ public: Test(){}; int i; etc... }; public ref class MeineKlasse{ Test *t; etc. };
So funktioniert es bei mir. Musst natürlich new und delete entsprechend verwenden für diesen Zeiger.
Greetz
-
Ja, mit Pointer geht es aber sobald ich dann eine Instanz machen will kommt wieder der alte Fehler:
class Test{ public: Test(){}; int i; etc... }; public ref class MeineKlasse{ Test *t; MeineKlasse() { t=new Test(); }; etc. };
geht wieder net. Ich darf Pointer machen aber keine Instanzen!! Ich brauche aber Instanzen!!!
-
Hm, benutz ich in meinem Source genau so und habe keine Probleme damit. Achja, du musst aber noch deine Compilierung von /clr:pure (ist meistens Standardmäßig eingestellt) auf /clr umstellen, wenn du native C++ verwenden willst.
Greetz
-
Aha
Und wo stellt man das ein, hab jetzt leider auf diesen PC kein VB2005 istalliert da ich in der Arbeit bin (und zu hause hab ich kein Internet da ich ein Praktikum im ausland mache).
Werde es sonst hoffentlich schon finden, auf alle Fälle danke
-
Eigenschaften (des Projekts) -> Konfigurationseigenschaften -> Allgemein und dann die Option "Common Language Runtime-Unterstützung" auf "Common Language Runtime-Unterstützung (/clr)" setzen.
Greetz
-
Super danke, werd ich heute abend mal testen.
Melde mich dann morgen noch einmal ob es funktioniert hat
-
Jupp, hat funktioniert, danke nochmals