Types 我可以用TypeInfo\u结构创建一个结构吗?
我有一份打字资料;如何从中创建结构Types 我可以用TypeInfo\u结构创建一个结构吗?,types,d,Types,D,我有一份打字资料;如何从中创建结构 struct A { int example; } TypeInfo test = typeid(A); void main() { // how do I create a structure of type A from test in here? } 我认为这是不可能的。它意味着多态构造,而D中的结构没有提供多态构造 druntime支持此类功能,但是: class A {} auto ti = typeid(A); void
struct A {
int example;
}
TypeInfo test = typeid(A);
void main() {
// how do I create a structure of type A from test in here?
}
我认为这是不可能的。它意味着多态构造,而D中的结构没有提供多态构造 druntime支持此类功能,但是:
class A {}
auto ti = typeid(A);
void main()
{
auto instance = cast(A) ti.create();
assert(instance);
}
可以为类以外的类型实现类似的factory基础结构,但这不是现成的(这有点令人沮丧)。我认为这是不可能的。它意味着多态构造,而D中的结构没有提供多态构造 druntime支持此类功能,但是:
class A {}
auto ti = typeid(A);
void main()
{
auto instance = cast(A) ti.create();
assert(instance);
}
可以为类以外的类型实现类似的factory基础结构,但这不是现成的(这有点令人沮丧)。我想我会使用类而不是!谢谢一个可能的选择是创建一个长度==ti.init.length的内存块,然后将ti.init复制到该内存块上,并强制转换到结构中。。。尽管如此,如果您知道要强制转换到的结构类型,您只需执行
new struct()
。。。所以你可以用typeinfo制作一个,但不能真正使用它。情况实际上类似于类是create
返回Object
,不需要特定的类型和强制转换。尽管可以改为转换到公共接口并使用虚拟分派,这一点有所缓解。这就是为什么它对结构不是很有用的原因。我想我会使用类而不是!谢谢一个可能的选择是创建一个长度==ti.init.length的内存块,然后将ti.init复制到该内存块上,并强制转换到结构中。。。尽管如此,如果您知道要强制转换到的结构类型,您只需执行new struct()
。。。所以你可以用typeinfo制作一个,但不能真正使用它。情况实际上类似于类是create
返回Object
,不需要特定的类型和强制转换。尽管可以改为转换到公共接口并使用虚拟分派,这一点有所缓解。这就是为什么它对结构不太有用的原因。