オーバーロードした関数の関数ポインタ

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: オーバーロードした関数の関数ポインタ

by 山本 » 2006年3月18日(土) 12:47

ご報告ありがとうございます。

次回のバージョンアップで、AddressOf関数は左辺の型を考慮した上でオーバーロードを解決するよう、修正しようと思います。

by イグトランス » 2006年3月16日(木) 08:35

C++だとオーバーロードされた関数のアドレスを得るときには,
代入する先などの型に応じて適切な関数を選ぶそうです。
http://d.hatena.ne.jp/Cryolite/20040820

これを使う方はともかく,実装する方は面倒でありそうな仕組みですが。

Re: オーバーロードした関数の関数ポインタ

by Mario2 » 2006年3月15日(水) 22:58

コード: 全て選択

sub update()
    print "update()"
endsub
sub update(n as long)
    print "update(long)"
endsub

dim pf as *sub(n as long)
pf = addressof(update)
pf(0)
と言うか、「update」が2つあるのに、エラーを出さないこと自体バグの可能性があるような・・・?
多分、引数のあるほうを上にするとあるほうのが動作すると思います(分かりませんが・・・)

オーバーロードした関数の関数ポインタ

by k.kiyo » 2006年3月15日(水) 20:48

オーバーロードした関数の関数ポインタが正しく動作しません。
下の例では、引数が1つの関数を呼び出しているのに
実際は引数のない関数が呼ばれます。

コード: 全て選択

sub update()
    print "update()"
endsub
sub update(n as long)
    print "update(long)"
endsub

dim pf as *sub(n as long)
pf = addressof(update)
pf(0)
AB4.22 WinXP

ページトップ