is this a dmd bug ?
Steven Schveighoffer
schveiguy at yahoo.com
Tue Nov 24 04:54:59 PST 2009
On Tue, 24 Nov 2009 07:38:51 -0500, Long Chang <changedalone at gmail.com>
wrote:
> how about this case:
>
>
> public interface Listener {
> void handleEvent (int);
> }
>
> class Test{
> this(){
> Listener listener = new class() Listener {
> public void handleEvent(int evt) {
> toString(evt);
> }
> };
> }
>
> void toString(int evt){
>
> }
> }
>
> void main(){
>
> }
>
> ---------------------------------------
> x.d(17): Error: function object.Object.toString () does not match
> parameter
> types (int)
> x.d(17): Error: expected 0 arguments, not 1 for non-variadic function
> type
> char[]()
Try outer.toString(evt).
Note that the anonymous class inherits from Object, which defines toString
as:
char[] toString();
So the compiler thinks you are trying to call your anonymous class'
toString, not the outer class' toString.
-Steve
More information about the Digitalmars-d
mailing list