d的betterC接口和动态转换库
大家好,我已为那些希望在betterC中,不用丢失接口实现的使用类的人做了该小项目.
该库只是定义了,必须继承的CppExtend及CppInterface类.它有个简单的New!T分配器和Destroy!T析构器.
工作原理是在输入上,定义和重定义函数,在类内部,类的实现是私有的,通过引用基类来存储每个实现,以调用函数的基类实现,所以,就像今天在纯D中那样,可得到独立接口.
激发好奇心的简单示例代码:
extern(C++)
{
///接口
abstract class Printable
{
void print();
}
///接口
abstract class Stringificable
{
extern(D) string toString2();
}
///实现可打印类和可串化类的新类
class Test : CppInterface!(Test, Printable, Stringificable)
{
void print()
{
import core.stdc.stdio;
printf("打印函数上的toString: %s\n", toString2.ptr);
}
extern(D) string toString2()
{
return __traits(identifier, Test);
}
}
}
extern(C) void main()
{
Test t = New!Test;
t.print();
Printable p = t.getInterface!Printable;
p.print();
}
我已在DLL边界下测试了,它正确工作.未来打算使我的游戏引擎有更好C兼容.需要dmd-fe2.101或更高版本.
地址在此
浙公网安备 33010602011771号