我的c ++非常生疏,仿制药总是让我感到困惑,所以这种组合对我的大脑来说并不好,所以这就是我的问题。
我有一组看起来像这样的类:
class MyEvent2 : public Event
{
public:
static constexpr char* CLASS_NAME = "MyEvent2";
MyEvent2(Object& sender) : Event(sender)
{
}
virtual ~MyEvent2() {}
static const char* EventId() {
return MyEvent2::CLASS_NAME;
}
const char* eventId() override {
return MyEvent2::CLASS_NAME;
}
};
这些类将用于在事件总线上注册事件处理程序,因此我添加了这样的处理程序。
EventBus::AddHandler<MyEvent>(*this);
EventBus::AddHandler<MyEvent2>(*this);
然后我创建事件的内容并像这样解雇它们:
MyEvent e1(*this);
MyEvent2 e2(*this);
EventBus::FireEvent(e1);
EventBus::FireEvent(e2);
我的问题是如何制作这种通用名称?我希望能够制作一些派生的&#34;活动&#34;我只需要包含真正需要唯一的一行
的类static constexpr char* CLASS_NAME = "TheClassName";
顺便说一句:我知道可以使用typeid来获得这样的东西,但是我无法在Arduino设备上使用它。
然后添加唯一的&#34;事件&#34;特定领域和成员。
这是我到目前为止所做的:
我创建了一个模板类(或者它应该被称为类模板?):
template<class T>
class ArduinoEvent : public Event
{
public:
T(Object& sender) : Event(sender)
{
}
virtual ~T() {}
static const char* EventId() {
return T::CLASS_NAME;
}
const char* eventId() override {
return T::CLASS_NAME;
}
};
但我不知道如何使用它,或者这是否是正确的方向。