构建模板化容器类
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)...)
【讨论】:
以上是关于构建模板化容器类的主要内容,如果未能解决你的问题,请参考以下文章