【发布时间】:2021-05-10 06:10:08
【问题描述】:
假设我有以下 Mouse Event 类,其中包含 Button 事件并扩展了 Button Press 和 Button Release 事件:
namespace Event {
namespace Mouse {
class Button : public Event {
public:
inline Input::Code::Mouse get_mouse_button() const {
return m_Button;
}
EVENT_CLASS_CATEGORY(Event_Category_Input | Event_Category_Mouse)
protected:
Button(Input::Code::Mouse button)
: m_Button(button) {}
Input::Code::Mouse m_Button;
};
class Press : public Button {
public:
Press(Input::Code::Mouse button) : Button(button) {}
std::string to_string() const override {
return fmt::format("Mouse Button Press: {0}", m_Button);
}
EVENT_CLASS_TYPE(Mouse_Button_Press)
};
class Release : public Button {
public:
Release(Input::Code::Mouse button)
: Button(button) {}
std::string to_string() const override {
return fmt::format("Mouse Button Release: ", m_Button);
}
EVENT_CLASS_TYPE(Mouse_Button_Release)
};
}
}
我想用Event::Mouse::Button::Press 和Event::Mouse::Button::Release 而不是Event::Mouse::Press 和Event::Mouse::Release 来引用这些。我不能直接添加 namespace Button 来强制执行此行为,因为它会与已定义的 Button 类冲突。有没有办法做到这一点?我知道我可以分别将其命名为 Button_Press 和 Button_Release,但出于文体原因,我不想这样做。提前致谢!如果不可能,我就收拾一下,用下划线。
【问题讨论】:
-
你能编辑
Button类吗? -
好的,你建议用什么方式?
-
如果我基本上同时得到两个相同的答案,我接受哪个答案?
-
时间无关紧要。尽你最大的努力去接受你认为最好的答案。这里没有难过的感觉。
标签: c++ class inheritance namespaces c++20