如何覆盖默认的struct构造函数

问题描述 投票:1回答:1

我有一个结构,需要跟踪创建的实例数并将其用作唯一ID。因此,在默认构造函数中,我需要更新一个静态变量,例如:

struct Wire {
    int x, y, id;
    static int instanceCount;

    this() {
        this.id = instanceCount++;
    }
}

我不想禁用默认构造函数。当前,我正在使用一个类来解决它。

d
1个回答
0
投票

这些是您在D中的选项。使用一个类并能够定义无参数构造函数,或者使用一个结构而无法做到这一点。这样做的原因显然必须处理D的.init功能。另一个解决方法是使用一个单独的工厂函数来构造Wire,更新instanceCount并返回Wire。

无论如何,听起来您在做的事情听起来更有意义。更期望类具有“实例”和类状态,例如instanceCount。如果只希望结构以便可以在堆栈上分配它们,则可以使用以下类来实际执行此操作:scope s = new S()

© www.soinside.com 2019 - 2024. All rights reserved.