Я пытаюсь сохранить std::vector
внутри класса с именем InputManager
, который хранит слушателей.Как сохранить std :: vector, если тип нуждается в шаблоне
У меня есть суперкласс, который называется Listener
. Этот класс имеет переменные с типами, хранящимися в шаблоне.
template <class obj>
class Listener
Производный класс определяет шаблон на основе типа слушателя:
class onClickListener : public Listener<Button*>
Как я могу хранить std::vector
из Listeners
без определения типа?
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 без шаблона? –