掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
インスタンスメソッドを関数ポインタとして渡す方法 (ID:69215)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
C++/CLIで開発しています。 下記の①のようなプログラムを書いたところ、 「error C2276 仮想関数のアドレスを取ろうとしました」 とのエラーが表示されました。 そこで、↓を読み、 http://msdn.microsoft.com/ja-jp/library/850cstw1(VS.80).aspx structA ss = &this->testMethod; の部分を structA ss = {&A::testMethod}; に直しましたが、今度は、 「error C3374 delegate インスタンスを作成する場合以外に、A::testMethodのアドレスをしていできません」 とエラー表示が表れました。 そこで、↓を読み、 http://msdn.microsoft.com/ja-jp/library/5408cs95(VS.80).aspx 下記②のようにdelegateを利用する仕様にしましたが、今度は 「error C2440 初期化中 A::Fnc^ からvoid(__cdecl *)(void)に変換できません」 という旨のエラーが出てきました。 当方、C++については理解が足らず、もしかしたら極めて初歩的な問題かもしれませんが、どうにも手詰まりとなってしまいました。 解決方法をご存じな方がいらっしゃいましたらお教え願えないかと思っております。 どうぞよろしくお願いいたします。 //①***************************************************** public struct structA { void (* f) (); }; ref class A { private: void testMethod(){} void setTestMethod(){ structA ss = &this->testMethod; } }; //***************************************************** //②***************************************************** public struct structA { void (* f) (); }; ref class A { private: void testMethod(){} void setTestMethod(){ Fnc ^ fnc = gcnew Fnc(this, &A::testMethod); structA ss = {fnc}; } delegate void Fnc(); }; //*****************************************************
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.