定义模板构造函数

时间:2013-12-31 16:26:44

标签: c++ templates stl

执行此操作时,我收到错误:undefined reference to SE::ShockEvent<sf::Event>::ShockEvent(sf::Event&)

    template <class Type> class ShockEvent
        {
        public:
            //event_type will be the enumerator that tells what the event is
            //so we know how to process it
            explicit ShockEvent(Type& event_type);
            virtual ~ShockEvent() {};

        protected:
            virtual std::unique_ptr<ShockEvent> createEvent(Type eventType);

        private:
            ShockEvent();
        };

class ShockUserEvent : public ShockEvent<sf::Event>
    {
    public:
        ShockUserEvent();

    private:
        sf::Event m_event;
    };

ShockUserEvent::ShockUserEvent() :
    ShockEvent<sf::Event>(m_event)
    {

    }

在ShockUserEvent中我试图定义Type,但它不断吐出错误。感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

你需要改变这个:

explicit ShockEvent(Type& event_type);

对此:

explicit ShockEvent(Type& event_type) {}

否则它只是一个没有实现的声明。

更深一点,如果你将event_type传递给这个构造函数,大概是需要的东西,所以你应该在{}之间使用它,或者丢弃它参数。

答案 1 :(得分:0)

您尚未定义构造函数的主体。