【发布时间】:2019-12-28 23:19:00
【问题描述】:
所以我有一个模板函数,我想动态定义类型。
something_that_holds_type type;
obj.GetComponent<type>();
有可能吗? 我也想过这样的事情:
#define GETTYPE(t) t
obj.GetComponent<GETTYPE(int)>();
这行得通,但这无济于事。我想做的是传递类型名称并将其转换为关键字,类似于:
#define GETTYPE(t) removes_quatation_marks_of_t
obj.GetComponent<GETTYPE("int")>();
这在 c++ 中是否可行?
【问题讨论】:
-
您这样做究竟想达到什么目的?无论如何,必须在编译时知道类型,所以这些宏似乎让事情变得更加困难
-
写
int兄弟 -
告诉我们您真正想要做什么。
std::variant之类的东西可能对您有用,但我们无法真正知道 -
std::type_info(在#include <typeinfo>)和typeid(Foo)可以做你想做的事。如果您想跨平台共享或用于持久存储,则不兼容交叉编译器。 -
我有一个实体类。该类当时只能拥有和访问一个组件:Box Collider、Sphere Collider、Mesh Collider 等。但我不想声明我可以在 Entity 类中拥有的每个对撞机组件。因此,我创建了一个指向其中一个对撞机类的 void*。为了正确访问数据,我必须在运行时知道类型,因为我也计划在运行时更改对撞机。我想要一个返回指向碰撞器的指针的函数,因为我有一个模板