2012-07-10 6 views
10

私は.NETフォームとVisual Studioのネイティブコードを持っています。問題は次のとおりです。ネイティブコードで管理変数を宣言するC++

error C3145: 'EditorEntry' : global or static variable may not have managed type 'Cube3D::Editor ^' 
+1

にもC3145文書このエラーのMSDNの記事を、そのクラスを参照

ref class ManagedGlobals abstract sealed { public: static Excel::Application^ xl; }; 

を。また、回避策を提供し、それをrefクラスの静的メンバーにします。 –

答えて

12

代わりのグローバルを使用して:

Editor^ maineditor; 

それは私にこの問題を与える:私はこのように、私のネイティブコードで私の.NETフォームのグローバルインスタンスを宣言することはできませんコンテナタイプで静的メソッド

ref class ManagedGlobals { 
    public: 
    static Editor^ maineditor = nullptr; 
}; 
+0

THanksですが、私はエディタを定義するときに2番目のコードです:静的な記憶期間を持つ変数は、ハンドルまたは追跡参照型を持つことができません –

+0

およびコンパイル時: 'エディタ':グローバル変数または静的変数が管理型 'Cube3D: :Editor^' –

+0

@ user1492812おっと、それは問題だったとは思いませんでした。その答えの一部を削除しました – JaredPar

5

を作る静的な試みはgcroot <>のstruct

でハンドルを包みます
gcroot<Editor^> maineditor; 
+0

ダミーラッパークラスを作成するよりも魅力的でクリーナーのように動作します:-) – Cameron