- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vc2005.net 構造体の宣言について)
VC2005.NETで構造体を宣言する方法
このQ&Aのポイント
- Visual Studio(VC++) .NET 2005マネージで構造体を作る方法を教えてください。
- クラス内で構造体を宣言しようとするとエラーが出てしまいます。
- 配列の宣言はうまくできるのですが、なぜ構造体がうまくいかないのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
structはマネージドではありません。 アンマネージドとマネージドを混在させて使おうとするといろいろと面倒です。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
回答No.1
STRUCTTESTの定義は? 「混合型」って出るってことは、アンマネージドの構造体ですか?
質問者
お礼
ありがとうございます。 typedef struct{ BYTE a : 1 ; //ビットフィールド ~~ BYTE abc[10];//配列 }STRUCTTEST; 今手元に環境が無いため記憶で書くとこんな感じです。 今書いて思ったのですがこのabcは array<BYTE>^ abc = gcnew array<BYTE>(10); このように書かなければならないということでしょうか。
お礼
ありがとうございます。 キーワードを変えて調べてみました。 アンマネージド(unmanaged ネイティブとも) クラスは class 構造体はstruct マネージド(managed) クラスはref class 構造体は value class ということは、私の場合は定義を typedef value class{ BYTE a : 1 ; //ビットフィールド ~~ /* 構造体の中の配列は下記でよい? */ BYTE abc[10];//配列 /* 仮に駄目ならこちら */ array<BYTE>^ abc = gcnew array<BYTE>(10);//1 static array<BYTE>^ abc = gcnew array<BYTE>(10);//1 }STRUCTTEST; このようにする。 実態を作るときは下記のようにする。 static STRUCTTEST test = gcnew STRUCTTEST; 構造体配列なら下記のようにする。 static array<STRUCTTEST>^ test = gcnew array<STRUCTTEST>(10); ******************************* //typedefを使わない場合の記述はこう? value struct STRUCT TEST{ }; //上記の実体を作る static value struct STRUCTTEST test = gcnew STRUCTTEST; ******************************* このような感じでよいでしょうか?今手元に環境が無いため未確認です。