我有一个看起来像这样的课程:
class container{
private:
std::vector<physical_component> physical;
std::vector<storage_component> storage;
--some other stuff not relevant--
public:
--constructors, getters setters, methods to add to the vectors etc--
}
现在我正在制作physical_component和storage_component类,因为我不知道正确的数据类型来处理这类事情。
Physical_component应该能够:
我记得那句话就像在enum旁边那样令人兴奋,但我不知道这个名字。此外,c ++可能有更好的方法。
Storage_component应该是:
我不知道如何正确实现这一目标。我看到std :: any但它似乎相当新,因此我不知道它是否是一个很好的方法来解决这个问题。另外,我无法使storage_component成为模板,因为我无法将其存储在矢量
中实现这些类的(正确)方法是什么?
答案 0 :(得分:0)
存储一定数量的类型,并完全保留类型
您可能需要std::variant<Ts...>
(或boost::variant<Ts...>
)。它会在特定时间点存储 Ts...
中的一个。
存储任何类型
如果所有类型共享相同的接口,请使用传统的virtual
+ std::unique_ptr
多态方法。否则std::any
是正确的选择。