【发布时间】:2020-06-14 00:03:48
【问题描述】:
我正在尝试使用模板,想知道是否有可能实现这样的目标:
template<typename T> class TemplatedClass{
private:
T n;
T z;
T x;
public:
TemplatedClass(T n, T z, T x) {
this->n= n;
this->z= z;
this->x= x;
}
此模板类将使用其构造函数根据给定数据创建自身的实例,例如:
struct Mystruct{
string n;
int x;
float d;
};
void TemplatedClass<T>::createInstances(T o){
TemplatedClass<Mystruct> tc(o.getS(), sizeof(o), 16.2f);
}
//Where (T o) is any other class that contains some function that returns a string.
这甚至可能吗?根据我的研究,我发现它可以与使用可变参数模板的 C++11 一起使用 但不完全确定如何实现它。
我正在尝试根据结构中的任何数据成员(在这种情况下,它的字符串、int 和浮点数)创建该模板化类的实例,并且我们从其他类获取数据只要因为它们与结构匹配。
非常感谢任何帮助!
【问题讨论】:
-
TemplatedClass<Mystruct>有三个Mystruct类型的成员,它的构造函数接受三个Mystruct类型的参数。不是string、int和float。目前尚不清楚您要达到的目标。 -
确实非常非常非常不清楚
-
我正在尝试根据结构中的数据成员(在这种情况下,它的字符串、整数和浮点数)创建该模板化类的实例,并且我们正在获取数据来自其他类,只要它们与结构匹配。
-
好吧,它们都必须具有 MyStruct 类型,不是吗?您是否尝试使用相同的参数为 n、x 和 z 提供参数并实例化三个不同的副本?
-
有什么意义?你会用
TemplatedClass<Mystruct>做什么,你不能直接使用Mystruct?不要描述你提出的解决方案,而是描述你试图解决的原始问题。
标签: c++ c++11 templates variadic-templates