c – 具有通用/模板化变量的STL容器
发布时间:2020-12-16 10:42:57 所属栏目:百科 来源:网络整理
导读:我只想做以下事情: template typename Tclass gvar {private: T var;public: gvar(T var) : var(var) {}};std::stackgvar some_stack; g吐出关于gvar不是一种类型的各种错误.这可以通过一些相对简单的方式实现吗?我不想使用boost :: any / boost :: varian
我只想做以下事情:
template <typename T> class gvar { private: T var; public: gvar(T var) : var(var) {} }; std::stack<gvar> some_stack; g吐出关于gvar不是一种类型的各种错误.这可以通过一些相对简单的方式实现吗?我不想使用boost :: any / boost :: variant. 编辑: 澄清我想要的东西: 一个std :: stack,可以保存不同类型的变量(只是原语很好). 解决方法
通常,如果您想要多态,则使用基类:
class GVarBase { public: virtual ~GVarBase() {} }; template <typename T> class GVar: public GVarBase { public: private: T mVar; }; std::stack< std::unique_ptr<GVarBase> > stack; 请注意,使用当前的代码,甚至std :: stack< GVAR< INT> >如果不起作用,则需要默认构造函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |