【发布时间】:2013-01-25 23:43:53
【问题描述】:
我有一个 C++ 类模板。它接受模板参数类 T 并将类型 T 的对象存储为私有成员,可通过称为 data() 的方法访问。下面的代码演示了它。我希望我的类模板提供一个考虑 T 类型的便捷构造函数。例如,一个将 T 的一些字段作为参数并用它们的值初始化封装的 T 对象的构造函数。
做到这一点的一种方法是让用户从模板实例化中派生并在那里添加他们自己的构造函数,但我自然更希望有一种方法来提供 ctor 而无需让用户编写派生类。
template <class T>
class Templ
{
public:
T& data();
const T& data() const;
private:
T obj;
};
现在,如果用户想要一个方便的构造函数,他们必须派生 Templ:
class MyClass : public Templ<MyData>
{
public:
MyClass (int size, MyClass* parent, float temperature, std::string name);
};
我阅读了一些 C++11 的内容,并有关于让像 STL 这样的构造函数模板具有 std::list::emplace() 方法集的想法,但我不确定常见的最佳实践解决方案是什么。
【问题讨论】:
标签: c++ templates c++11 constructor