0
我試圖在名爲InputManager
的類中存儲std::vector
,該類存儲偵聽器。如果類型需要模板,如何存儲std :: vector
我有一個名爲Listener
的超類。該類具有存儲在模板中的類型的變量。
template <class obj>
class Listener
派生類的基礎上定義的監聽器類型的模板:沒有定義類型
class onClickListener : public Listener<Button*>
我怎麼能存儲Listeners
的std::vector
?
std::vector<Listener<obj>> InputManager::listeners = std::vector<Listener<obj>>()
class InputManager
{
public:
template <class obj>
InputManager(GLFWwindow* window);
template <class obj>
void run();
~InputManager();
static InputManager* Self;
template<class obj>
void addListener(Listener<obj>* listener);
private:
GLFWwindow* window;
static std::vector<Listener<obj>> InputManager::listeners = std::vector<Listener<obj>>();
};
如果您需要更多信息,請讓我知道。
* CRTP *是靜態的多態性。如果你想要運行時多態行爲(這是你要求的向量元素引用不同的動態實例),你需要非模板繼承。 – Pixelchemist
我怎麼能夠保持有能力將這些變量存儲在沒有模板的Listener中? –