[疑难] 请教委托的使用!

hurd 2008-10-20
我自己测试如下方式使用通过编译。
interface IUnknown_{}
class klass : IUnknown_{	
	this(){}	
	void add(void delegate() dg){}
}
void main(){
	auto t	= new klass;	
	t.add(delegate void(){});	
}


代码改成这样就提示错误
interface IUnknown{}
class klass : IUnknown{	
	this(){}	
	void add(void delegate() dg){}
}
void main(){
	auto t	= new klass;	
	t.add(delegate void(){});	
}


引用

t2.d(8): function t2.klass.add (void delegate()) does not match parameter types (void delegate())
t2.d(8): Error: cannot implicitly convert expression (__dgliteral1) of type void delegate() to void delegate()


hurd 2008-10-20
那位大哥知道怎么解决啊。
oldrev 2008-10-20
IUnknown 是个特殊的名字,是编译器内部为 COM 准备的,不要定义你自己的 IUnknown
hurd 2008-10-21
不管是自那里继承IUnknown的类,里面的委托必须使用 extern (Windows)才可以通过编译。

我自己写个IUnknown只是为了错误测试。。
Global site tag (gtag.js) - Google Analytics