最新の更新情報

2012年5月
« 4月    
 12345
6789101112
13141516171819
20212223242526
2728293031  

本ブログのURL

qrcode.png

お天気

 
このブログ「吟遊詩人の戯言」 の記事検索...

【C++/CLI】アンマネージクラスにマネージクラスのメンバを追加したい


キーワード(クリックで関連記事が読めます) → ,

関連記事



 
 

ついに,禁断のC++/CLIに手を出してみたり...

いや,悪戦苦闘中(爆

少しずつ,ここにTIPSが上がるはず?


ってことで,第一弾

    アンマネージクラスにマネージクラスのメンバを追加したいのじゃ!




C++:
  1. class CHogeHoge : public CObject
  2. {
  3. private:
  4.       Bitmap^  m_Image;
  5. }


見たいなの書くと...

    error C3265: マネージ 'm_Image' をアンマネージ 'CHogeHoge' で宣言できません。

と言われて,怒られる(´・ω・`)ショボーン

まぁ,メモリ管理の問題から,いろいろあるっちゃろねぇ
アンマネージとマネージの間には,深くて暗い川があるしのぉ~
でも,使いたいんじゃぁ~~ :twisted:

ってことで,調べていったら...
裏技発見!

C++/CLI - ネイティブクラスメンバのマネージクラス - LangEdge Weblog

さまのページに,記載がありましたです

なんでも,マネージクラスメンバの宣言時に

    gcroot<マネージクラス名^>

を使えばいいとのこと

書き直してみた

C++:
  1. class CHogeHoge : public CObject
  2. {
  3. private:
  4.       gcroot<Bitmap^>  m_Image;
  5. }


これで,コンパイルも通り,使えるようになりましたです :wink:

あと,この変数のNULLチェックですが
C++:
  1. if (m_Image == nullptr)
  2. {
  3.     //にゃぁ~にゃぁ~にゃぁ~
  4. }


と書くと

    error C2088: '==' : struct に対して正しくありません。

と,また怒られる

チェックするためには一手間必要で

C++:
  1. if (static_cast<Bitmap^>(m_Image) == nullptr)
  2. {
  3.     //にゃぁ~にゃぁ~にゃぁ~
  4. }


みたいな感じで,キャストしてやる必要がありますです

 
 
 
 

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">