ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
-
k.kiyo
#1
投稿記事
by k.kiyo »
オーバーロードした関数の関数ポインタが正しく動作しません。
下の例では、引数が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
-
Mario2
- 記事: 205
- 登録日時: 2005年5月31日(火) 13:31
- お住まい: 大阪市
#2
投稿記事
by Mario2 »
コード: 全て選択
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つあるのに、エラーを出さないこと自体バグの可能性があるような・・・?
多分、引数のあるほうを上にするとあるほうのが動作すると思います(分かりませんが・・・)
-
イグトランス
- 記事: 899
- 登録日時: 2005年5月31日(火) 17:59
- お住まい: 東京都
#3
投稿記事
by イグトランス »
C++だとオーバーロードされた関数のアドレスを得るときには,
代入する先などの型に応じて適切な関数を選ぶそうです。
http://d.hatena.ne.jp/Cryolite/20040820
これを使う方はともかく,実装する方は面倒でありそうな仕組みですが。
-
山本
- Site Admin
- 記事: 535
- 登録日時: 2005年5月30日(月) 15:08
#4
投稿記事
by 山本 »
ご報告ありがとうございます。
次回のバージョンアップで、AddressOf関数は左辺の型を考慮した上でオーバーロードを解決するよう、修正しようと思います。