构建模板化容器类

Posted

技术标签:

【中文标题】构建模板化容器类【英文标题】:Building a Templated Container Class 【发布时间】:2017-01-30 15:19:55 【问题描述】:

作为我的自定义对象系统的一部分,我希望有一个 Container 类,它只包装第三方对象,以便它们可以集成到我的容器系统中。

假设我有以下第三方对象,

class Point  
public:  
  int x;  
  Point(int y = 0) : x(y)   
  int value()  return x;  
;

容器类,

template <typename T, typename... Args> class Container  
   T dat; 
public:  
   Container(const Args &... args)  dat = T(args...);   
   T data()  return dat;  
;

我正在尝试提供以下api,

    Container<Point> v = Container<Point>(1);

我正在尝试将传递给值构造函数的参数直接传递给类型 T 构造函数。

编辑:我收到编译器错误candidate expects 0 arguments, 1 provided errors

【问题讨论】:

那么...您面临什么问题? Container() 构造函数??!!不应该是 Value()? @Quentin 我不工作。我收到一堆candidate expects 0 arguments, 1 provided 错误 @chedynajjar 正确复制/粘贴错误已修复。 @HamzaYerlikaya 请在您的问题中包含确切的错误,以及足够的代码来重现它们。 【参考方案1】:

您需要将构造函数模板化为Args...,而不是类:

template <typename... Args>
Container(Args&&... args) : dat(std::forward<Args>(args)...)    

【讨论】:

以上是关于构建模板化容器类的主要内容,如果未能解决你的问题,请参考以下文章

Docker中的镜像与容器

基于模板类开发vector容器

基于模板类开发vector容器

C++--模板&STL

在自身内部创建模板类的 std 容器

用类模板实现容器(STL里面的vector)