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中? –