加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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> >如果不起作用,则需要默认构造函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读