最新の更新情報

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

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

関連記事

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

いや,悪戦苦闘中(爆

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


ってことで,第一弾

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




class CHogeHoge : public CObject
{
private:
      Bitmap^  m_Image;
}

見たいなの書くと...

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

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

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


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

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

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

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

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

を使えばいいとのこと

書き直してみた

class CHogeHoge : public CObject
{
private:
      gcroot<Bitmap^>  m_Image;
}

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


あと,この変数のNULLチェックですが
if (m_Image == nullptr)
{
    //にゃぁ~にゃぁ~にゃぁ~
}

と書くと

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

と,また怒られる

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

if (static_cast<Bitmap^>(m_Image) == nullptr)
{
    //にゃぁ~にゃぁ~にゃぁ~
}

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

 
 
 
 

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=""> <s> <strike> <strong> <img localsrc="" alt="">