• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vc2005.net 構造体の宣言について)

VC2005.NETで構造体を宣言する方法

このQ&Aのポイント
  • Visual Studio(VC++) .NET 2005マネージで構造体を作る方法を教えてください。
  • クラス内で構造体を宣言しようとするとエラーが出てしまいます。
  • 配列の宣言はうまくできるのですが、なぜ構造体がうまくいかないのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

structはマネージドではありません。 アンマネージドとマネージドを混在させて使おうとするといろいろと面倒です。

noname#151586
質問者

お礼

ありがとうございます。 キーワードを変えて調べてみました。 アンマネージド(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; ******************************* このような感じでよいでしょうか?今手元に環境が無いため未確認です。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

STRUCTTESTの定義は? 「混合型」って出るってことは、アンマネージドの構造体ですか?

noname#151586
質問者

お礼

ありがとうございます。 typedef struct{ BYTE a : 1 ; //ビットフィールド ~~ BYTE abc[10];//配列 }STRUCTTEST; 今手元に環境が無いため記憶で書くとこんな感じです。 今書いて思ったのですがこのabcは array<BYTE>^ abc = gcnew array<BYTE>(10); このように書かなければならないということでしょうか。

関連するQ&A