定义模板构造函数

Defining template constructor

本文关键字:构造函数 定义      更新时间:2023-10-16

我得到错误:执行此操作时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 中,我试图定义类型,但它不断吐出错误。感谢您的任何和所有帮助。

您需要更改此设置:

explicit ShockEvent(Type& event_type);

对此:

explicit ShockEvent(Type& event_type) {}

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

更深层次的是,如果要将event_type传递给此构造函数,则可能是某些东西需要它,因此您应该在{}之间使用它,或者丢弃该参数。

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