1
我有一個TypeInfo_Stuct;我該如何創建一個結構?我可以使用TypeInfo_Struct創建一個結構嗎?
struct A {
int example;
}
TypeInfo test = typeid(A);
void main() {
// how do I create a structure of type A from test in here?
}
我有一個TypeInfo_Stuct;我該如何創建一個結構?我可以使用TypeInfo_Struct創建一個結構嗎?
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);
}
人能夠實現比類其他類型類似的工廠基礎設施,但是,是不是開箱即用(並且有點不鼓勵)。
我想我會使用類比!謝謝! –
一個可能的選擇是創建一個長度爲== ti.init.length的內存塊,然後將ti.init複製到它,然後將其轉換爲結構......儘管如此,如果您知道要轉換的結構類型到,你可以做'新的Struct()'而不是...所以你可以用typeinfo做一個,但不能真正使用它。 –
情況實際上類似於'create'返回'Object'類,而不是特定類型並且需要強制轉換。雖然它可以改爲通用接口而不是使用虛擬調度來緩解。這就是爲什麼它對於結構不是很有用的原因。 –