我希望以下结构作为类成员,但我不知道T
的类型,所以我需要在运行时“声明”结构。
struct Chunk (T) {
string id;
T[][] data;
}
class FileBla {
this() {
Chunk !int ck; // need to be turned in a class member
}
}
应该遗漏一些简单的东西。
答案 0 :(得分:8)
你也可以模板这个类:
import std.stdio;
struct Chunk (T) {
string id;
T[][] data;
}
class FileBla(T) {
private:
Chunk!T ck;
}
void main() {
auto f = new FileBla!int;
writeln(typeid(f.ck));
}
答案 1 :(得分:2)
我假设你习惯于用动态语言编程,现在正在尝试学习静态语言。
至少有三种合理的方法可以做到这一点:
模板FileBla也是:
class FileBla(T) {
Chunk!T ck;
// Other stuff.
}
在多态类中包装Chunk。
在堆上分配Chunk并存储void*
指针。这是旧的C风格的做事方式,需要手动将指针强制转换为正确的类型,并且不安全。尽管如此,它偶尔会有用。