C++ 从 class 调用函数而不实例化它

C++ call function from class without instantiating it

dice.h,我有

class dice {
public:
    dice(int sides);
    int roll() const;
    static int globalRoll(int sides);
private:
    int sides;

并且在dice.cpp

dice::dice(int sides) {
    this->sides = sides;
}

int dice::roll() const {
    return rand() % sides + 1;
    //Here sides refers to member field
}

int dice::globalRoll(int sides) {
    return rand() % sides + 1;
    //Here sides refers to parameter
}

然后,例如在函数 rollInitiative() 中,我调用了

return dice.globalRoll(20) + getDexMod();

这不起作用,因为“不允许键入名称 [dice]”。我可以执行以下操作,但我不想为单个点名创建实例。

dice d(20);
return d.roll() + getDexMod();

我的假设是我可以从 class 调用静态函数而无需实例化它,因为我的理解是静态函数不引用 [=28= 的实例].

好的,我只需要将 dice. 更改为 dice::。我觉得很傻。我不太明白其中的区别,但我会研究一下。

此外,由于开销是无关紧要的,并且使用不同的路径来完成同一件事是一种不好的做法(最重要的是它仍然可以全部在一条线上),我刚刚删除了静态函数并将改为使用

dice(int).roll();