Opened 16 years ago
#178 new バグ(ケアレスミス)
デリゲートに関数へのポインタを追加できない
Reported by: | イグトランス (egtra) | Owned by: | イグトランス (egtra) |
---|---|---|---|
Priority: | 中-major | Milestone: | AB5 CP6 |
Component: | Compiler | Version: | |
Keywords: | Cc: |
Description
#149の関連として、次のコードがコンパイル・実行できるようになってほしいです。
Delegate Sub Callback1() Sub P1() End Sub Dim pfn As *Sub() pfn = AddressOf(P1) Dim c = New Callback1(pfn) c += pfn
試しに、ab5.0\system\templates\delegate.tabに次のコンストラクタを挿入して試してみましたが、メンバ関数をAddressOfしている箇所でコンパイルエラーとなってしまいました。それに、これではFunctionに対応できていません。
Sub #name#(pfn As *Sub(#params#)) simpleDelegates.Add( New System._SimpleDelegate( pfn As VoidPtr ) ) End Sub
なお、上のコードの*Sub(#params#)をVoidPtrにすると、New PaintDCEventHandler(p)として関数ポインタからのデリゲートの生成に成功しましたが、これだと型チェックがないので、正式版でこれを採用したくはありません。
Note:
See TracTickets
for help on using tickets.