【发布时间】:2022-07-25 20:54:14
【问题描述】:
如果我有这样的结构:
template<typename t>
struct Data
{
t* value;
}
我想将它存储在一个向量中以供运行时使用... 那我该怎么做呢?
这行不通:
std::vector<Data*> data;
我在网上阅读了许多指南,这些指南建议使用带有虚函数的基类.... 但是在这里我必须存储数据类型本身...
谢谢
【问题讨论】:
-
你可以考虑
std::any或者实现你自己的类型擦除类型。 -
不要不使用
std::any,这对工作来说是错误的。你应该重新考虑为什么需要这个。 -
然后创建一个接口(抽象基类,它也有利于测试,因为您也可以使用虚拟实现进行测试)。并创建一个指向这些接口的非拥有指针向量。
-
你需要反过来想,注入动画信息而不是存储对象本身。
-
@KrishGanatra 如果用户只在动画中添加了位置更改,那么我将更改位置 -- Visitor pattern
标签: c++ oop templates polymorphism