1
我想在C/C++中爲類項目實現遊戲引擎。我決定使用the acyclic visitor pattern來發送子系統之間的事件,因爲我需要能夠在引擎之外擴展事件和子系統的集合。我想使用模板的某些部分,因爲很多代碼與只有不同類型的參數相同。當創建一個新的事件,我想從Event
類模板繼承,然後與子類實例吧:實例化模板與模板的子類
// Event.h
template<typename T>
class Event {
static_assert(std::is_base_of<Event, T>::value);
public:
void Event::accept(EventListenerBase& el){
if (EventListener<T>* eventListener = dynamic_cast<EventListener<T>*>(*el)){
eventListner->accept(this);
}
}
};
// MyNewEvent.h
class MyNewEvent : public Event<MyNewEvent> {
}
這是一個可行的解決方案?
'這可能嗎?':你試過了嗎?什麼告訴你編譯器? – jpo38
也想到提供[mcve](http://stackoverflow.com/help/mcve),它很難預測是否'EventListener'已經重載轉換爲'T *'操作符或者它是你的代碼的錯誤。 .. –