可变类模板参数缩减与可变参数函数模板参数缩减

问题描述

可变参数类模板参数推导与可变参数函数模板参数推导有何不同?我目前有一个事件对象,它创建一个对象,该对象是某个基类的子类,每个子类的构造函数都采用非重叠类型和参数数量。我必须完成的课程看起来像这样

template <class T,class... Args>
    struct CreateDrawableObjTreeEvent : RenderEvent {
        CreateDrawableObjTreeEvent(Args&&... args) {
            drawable = new T(std::forward<Args>(args)...);
        }

        T* drawable;
    };

我想要实例化它的方式看起来像这样

RenderEvent* test = new CreateDrawableObjTreeEvent<DrawableObject>("testvertices");

其中 DrawableObject 构造函数接受 1 个字符串。当我尝试运行它时,我遇到了这个错误

'CreateDrawableObjTreeEvent<DrawableObject>::CreateDrawableObjTreeEvent': no overloaded function takes 1 argument   

但是,当我重新设计类结构以便实例化发生在函数而不是它编译的构造函数中时没有问题

    template <class T>
    struct CreateDrawableObjTreeEvent : RenderEvent {
        CreateDrawableObjTreeEvent() {}

        template <class... Args>
        void instantiate(Args&&... args) {
            drawable = new T(std::forward<Args>(args)...);
        }

        T* drawable;
    };

...


CreateDrawableObjTreeEvent<DrawableObject>* test = new CreateDrawableObjTreeEvent<DrawableObject>();
test->instantiate("testvertices");

我真的很想能够使用第一种方法的语法,有什么办法可以干净地实现这种行为吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)