用模板参数推论推导一个类的“外部类”

时间:2019-12-20 17:28:50

标签: c++

class Component_Base{};

class Rect_Component : Component_Base
{
public:
    struct Info
    {
        uInt width;
        uInt height;
    };
};

template<typename... Args>
class ECSData
{
private:
    tuple<optional_ECSVector_wrapped_t<Args>...> data;

public:

    template<typename... Info>
    void createEntity(Info&&... info) {
    }
};

int main()
{
    ECSData<Rect_Component, Text_Component, Rendering_System> ecsData;
    ecsData.createEntity(Rect_Component::Info{ .width{200}, .height{500} });
    return 0;
}

在上面的代码中,我将Rect_Component::Info传递给createEntity()。 给定上面的代码,可以在createEntity()内进行模板参数推导来推断T中的T::Info是什么,并使用T? 毕竟我在通话中写了Rect_Component,所以我怀疑一定有办法

1 个答案:

答案 0 :(得分:0)

考虑:

width:fit-content

这与原始struct Not_Rect_Component { using Info = Rect_Component::Info; }; 所提供的Info不能区分开,因此您不能推论其中一个。您必须在Rect_Component内提供一个typedef,以引用正确的父类型。