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
,不需要特定的类型和强制转换。尽管可以改为转换到公共接口并使用虚拟分派,这一点有所缓解。这就是为什么它对结构不太有用的原因。