次のエントリ: 今日の戦利品 [ぬいぐるみ]
(C++)メンバ関数のポインタでエラー
2005-12-08-2 / カテゴリ: [programming][c] / [permlink]
Visual C++にて
このあたりによると、
オブジェクトが生成されるまでメンバ関数はメモリ上のどこにあるかわからない(というかない?)ってことかな。
とりあえずクラスの定義で
実際の関数の定義は
class Hoge { : int foobar(); : };なメンバ関数に対し、クラス内の別メソッドで
*func = &this->foobar;とすると
error C2276: '&' : 仮想関数のアドレスを取ろうとしました。となってしまう。
このあたりによると、
staticメンバ関数か(C-likeな)グローバル関数でないと駄目です。なんだって。
理由は、「関数のアドレスが決定できない」です。
オブジェクトが生成されるまでメンバ関数はメモリ上のどこにあるかわからない(というかない?)ってことかな。
とりあえずクラスの定義で
class Hoge { : static int foobar(); :とすれば OK になった。
実際の関数の定義は
int Hoge::foobar() { : : }で、static は要らない。(というか、つけるとエラーになる)
次のエントリ: 今日の戦利品 [ぬいぐるみ]
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2013-05-02 16:12