Opened 12 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)として関数ポインタからのデリゲートの生成に成功しましたが、これだと型チェックがないので、正式版でこれを採用したくはありません。

Change History (0)

Note: See TracTickets for help on using tickets.