我正在尝试在 C++ 中创建一个类似于 Unity3d 中的“组件管理器”类。我想要的是一个容器类,它可以保存某个类的派生类型,比如 BaseComponent。在统一中,可以通过以下方式以类型安全的方式请求使用泛型的组件
manager.GetComponent() 返回类型为 DerivedComponentType&
我想要 C++ 中的相同接口。这样,只要通过 AddComponent 函数添加组件,就可以保证整个过程从使用角度来看是类型安全的。
我在这里试图避免使用字符串识别之类的事情。我意识到我也可以通过给每个派生类型一个同名的静态成员函数并使用它的地址作为类实例的映射索引来做到这一点。我宁愿不这样做,以便组件管理器的用户在他们选择派生自己的组件时不必确保此功能存在。
谢谢。