实现在派生的 class 上访问 class 成员静态和非静态的可能性

Implement possibility to access class member static as well as non-static on a derived class

我有以下 类.

// My baseclass
class Item {
    public:
    virtual const std::string GetItemName() = 0;
};

// My derived class
class Shovel : public Item {
    private:
    static const std::string _ITEM_NAME = "tool_shovel";

    public:
    const std::string GetItemName(){
        return _ITEM_NAME;
    }
}

有了这个,我可以像这样访问我的 Item 对象的名称:

Item* myItem = new Shovel();

myItem.GetItemName(); // Returns "tool_shovel" ofcourse

我现在也想访问一个项目的名称,而不需要像这样的实例。

Shovel::GetItemName();

我知道不可能实现虚拟静态功能。 但是有没有什么办法可以 'nice' 的方式来实现这个,或者这在我的概念中更像是一个问题?

感谢您的帮助!

我不知道可以直接从实例调用静态函数,所以我现在用两种方法解决了我的问题。 一个 public 静态函数,所以我可以随时获取项目的名称。以及另一个私有非静态函数,让基类获取当前项的名称。

代码如下:

// My baseclass
class Item {
    protected:
    virtual const std::string _GetItemName() = 0;
};

// My derived class
class Shovel : public Item {
    private:
    static const std::string _ITEM_NAME = "tool_shovel";

    protected:
    const std::string _GetItemName(){
        return _ITEM_NAME;
    }

    public:
    static const std::string GetItemName(){
        return _ITEM_NAME;
    }
};

我希望这对任何人都有帮助。如果您有任何问题,请随时提出。