値構造体をメンバに持つクラスについて、値構造体のポインタを取得するには?


テイラー  2013-02-05 06:35:39  No: 73606

value struct VS{};
ref class RC
{
VS vs1;
}
RC rc1;
とある時、
rc1->vs1のポインタVS*を取得するにはどう表現すればよいのでしょう?
初等的な質問かもしれないですが、どなたか教えて頂ければと思います。


επιστημη  URL  2013-02-05 13:38:19  No: 73607

&rc1.vs1 じゃなくて?


テイラー  2013-02-05 15:50:47  No: 73608

rc1が参照クラスなので、メンバをポイントは、rc1->vs1;で良いと思うんです。
少し調べたら(&rc1)->*vs1;かもしれないと思われましたが、VS1*を引数にする関数に渡そうとするとコンパイルエラーとなりました。
いやはや・・・。


tetrapod  2013-02-06 03:51:49  No: 73609

> コンパイルエラーとなりました。
と書くのではなくて、エラーメッセージを省略せずそのまま掲載するといいだろう。
まあ書き込む前に検索してみるともっといいわけだが。

「ポインタ」という用語は unmanage なものに対して使うのに対して
提示 ref class RC は manage なもの。
マネージオブジェクトのアンマネージポインタは取得できない。

どうしたらいいかは、どうしたいか次第。


テイラー  2013-02-06 04:29:35  No: 73610

value struct  VS{};
VS vs0;
ref class RC
{
VS vs1;
};
RC rc1;
void f1(VS*);

と宣言して、

f1(&vs0);
という呼び出しはコンパイル可能、
f1(rc1->vs1);
という呼び出しはコンパイルエラーとなるわけですが、関数f1にrc1のメンバvs1を渡す方法があるか、という質問です。

要領が悪い質問だったようで、お手数をお掛けしております。


tetrapod  2013-02-06 05:46:03  No: 73611

その答えは既に書いたとおり「不可能」
代替策はあるが、どの手法をとるべきかは案件次第


tetrapod  2013-02-06 05:46:04  No: 73612

その答えは既に書いたとおり「不可能」
代替策はあるが、どの手法をとるべきかは案件次第


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加