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
,所以我怀疑一定有办法
答案 0 :(得分:0)
考虑:
width:fit-content
这与原始struct Not_Rect_Component {
using Info = Rect_Component::Info;
};
所提供的Info
不能区分开,因此您不能推论其中一个。您必须在Rect_Component
内提供一个typedef,以引用正确的父类型。