我有一个结构,需要跟踪创建的实例数并将其用作唯一ID。因此,在默认构造函数中,我需要更新一个静态变量,例如:
struct Wire {
int x, y, id;
static int instanceCount;
this() {
this.id = instanceCount++;
}
}
我不想禁用默认构造函数。当前,我正在使用一个类来解决它。
这些是您在D中的选项。使用一个类并能够定义无参数构造函数,或者使用一个结构而无法做到这一点。这样做的原因显然必须处理D的.init功能。另一个解决方法是使用一个单独的工厂函数来构造Wire,更新instanceCount并返回Wire。
无论如何,听起来您在做的事情听起来更有意义。更期望类具有“实例”和类状态,例如instanceCount
。如果只希望结构以便可以在堆栈上分配它们,则可以使用以下类来实际执行此操作:scope s = new S()