![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
C++/CLIの構造体のコンストラクタについて
C++/CLIで、固定サイズの配列を持つ構造体を、次のようにコーディングして使っています。
value struct AAA
{
public:
array<unsigned short>^ m1;
AAA(unsigned short dummy)
{
m1 = gcnew array<unsigned short>(4);
}
};
AAA ^struct0 = gcnew AAA(0);
この方法で正常に動作するのですが、2点ほど気になる点があります。
(1) コンストラクタAAA(unsigned short dummy)を実装しなくても済む方法がないか?
(2) この方法では、struct0を、ネイティブヒープ領域に割り当てられない
(AAA *struct0 = new AAA(0))でコンパイルエラー)
(1)と(2)は関連する気もするのですが、これらを解決する方法はあるのでしょうか?
No.2ベストアンサー
- 回答日時:
>構造体をネイティブヒープ、マネージヒープのいずれにも割り当てることができれば、
言語仕様的に不可能です。
そもそもなんでそんなことが必要なんでしょうか?
C++/CLIでWin32APIを使うときはネイティブヒープ(スタックでも)の構造体でやり取りしますし。
No.1
- 回答日時:
単にvalueクラスにしなければいいのでは?
struct AAA
{
unsigned short m1[4];
};
この回答への補足
回答ありがとうございます。
説明不足でしたので補足いたします。
当方、ネイティブDLLをC++/CLIに対応させる作業を行っており、
構造体をネイティブヒープ、マネージヒープのいずれにも割り当てることができれば、
より、使い勝手も良くなるものと考えています。
構造体AAAをネイティブクラスにすると、
逆に、マネージヒープへの割り当てができなくなってしまいました。
OK: AAA * struct0 = new AAA;
NG: AAA ^ struct0 = gcnew AAA;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
int型とchar型について
-
VBAのプログラムで、DIAG = 1# ...
-
C言語 構造体の中に共用体を定...
-
日付チェック関数について
-
Integer変数をカラにしたいので...
-
C++ メンバイニシャライザリス...
-
VB6変数の宣言dim j,k,p,m,n as...
-
C言語 配列の長さの上限
-
配列で格納したものをmsgboxで...
-
構造体を使ったファイルの読み込み
-
listboxの並び替え
-
C#で構造体の配列を持った構造...
-
あるディレクトリ内のファイル...
-
コンボボックスでデフォルト値...
-
先頭アドレスとは何ですか?
-
配列を使わずに、変数名を動的...
-
関数から配列を返すには?
-
基本アルゴリズムの『返す』の...
-
セグメントエラー
-
C#でstringをポインタとして渡す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
C++ 構造体の一括初期化 {0}
-
構造体のデータを丸ごとコピー...
-
「#undef」と「#define」の使い...
-
long型のデータをバイト型の配...
-
C言語 構造体の中に共用体を定...
-
typedefをプログラム中で解除す...
-
VBAの変数のデータ型を変更する...
-
値が代入されてない時
-
異なる構造体のデータのコピー
-
VBAにてcolorindexを変数に格納...
-
charとucharの違い
-
構造体のポインタにNULLが入らない
-
VBAで符号無し整数
-
VB.NETのStructureというのはど...
-
構造体を型の異なる構造体に代入
-
日付チェック関数について
-
構造体の初期化方法について
-
変数の初期化について
おすすめ情報