ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 07:16

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 4 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 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


通報する
ページトップ
   
投稿記事Posted: 2006年3月15日(水) 22:58 
オフライン

登録日時: 2005年5月31日(火) 13:31
記事: 205
お住まい: 大阪市
コード:
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つあるのに、エラーを出さないこと自体バグの可能性があるような・・・?
多分、引数のあるほうを上にするとあるほうのが動作すると思います(分かりませんが・・・)


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年3月16日(木) 08:35 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 899
お住まい: 東京都
C++だとオーバーロードされた関数のアドレスを得るときには,
代入する先などの型に応じて適切な関数を選ぶそうです。
http://d.hatena.ne.jp/Cryolite/20040820

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


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年3月18日(土) 12:47 
オフライン
Site Admin

登録日時: 2005年5月30日(月) 15:08
記事: 535
ご報告ありがとうございます。

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


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 4 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Google [Bot] & ゲスト[10人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean