私は.NETフォームとVisual Studioのネイティブコードを持っています。問題は次のとおりです。ネイティブコードで管理変数を宣言するC++
error C3145: 'EditorEntry' : global or static variable may not have managed type 'Cube3D::Editor ^'
私は.NETフォームとVisual Studioのネイティブコードを持っています。問題は次のとおりです。ネイティブコードで管理変数を宣言するC++
error C3145: 'EditorEntry' : global or static variable may not have managed type 'Cube3D::Editor ^'
代わりのグローバルを使用して:
Editor^ maineditor;
それは私にこの問題を与える:私はこのように、私のネイティブコードで私の.NETフォームのグローバルインスタンスを宣言することはできませんコンテナタイプで静的メソッド
ref class ManagedGlobals {
public:
static Editor^ maineditor = nullptr;
};
THanksですが、私はエディタを定義するときに2番目のコードです:静的な記憶期間を持つ変数は、ハンドルまたは追跡参照型を持つことができません –
およびコンパイル時: 'エディタ':グローバル変数または静的変数が管理型 'Cube3D: :Editor^' –
@ user1492812おっと、それは問題だったとは思いませんでした。その答えの一部を削除しました – JaredPar
を作る静的な試みはgcroot <>のstruct
でハンドルを包みますgcroot<Editor^> maineditor;
ダミーラッパークラスを作成するよりも魅力的でクリーナーのように動作します:-) – Cameron
あなたはトップ(referece:Can a class be declared static in c++?)あなたの静的クラスをアップしている今だけ
ManagedGlobals::xl = gcnew Excel::Application();
にもC3145文書このエラーのMSDNの記事を、そのクラスを参照
を。また、回避策を提供し、それをrefクラスの静的メンバーにします。 –