【发布时间】:2017-06-13 14:02:17
【问题描述】:
我有以下数据结构
class FamilyMem
{
public:
string name;
string relation;
};
template<class T>
class Paerson
{
public:
string name;
int age;
vector<T> family;
};
我有一个向量定义如下
vector< Paerson<FamilyMem> > p;
我正在使用这个库,我想调用一个使用模板的函数,我正在尝试创建我自己的函数版本,但它不起作用
// I initialize the vector p by calling this function
initPerson(p);
for(int i=0; i< p.size(); p++)
display(p[i]);
这是函数
template<class U>
struct Displaying< std::vector<U> >
{
typedef std::vector<U> Vector;
static void display(const Vector& v)
{
cerr << "Vector Size " << v.size();
}
}
我想做这样的事情
template<class U>
struct Displaying< Paerson<FamilyMem> >
{
static void display(const Paerson<FamilyMem> v)
{
for (int i = 0; i < v.family.size(); i++)
cerr << "name " << v.family.name << " relation " << v.family.relation << "\n";
}
}
由于某种原因,它仍在调用矢量版本并打印大小
【问题讨论】:
-
请花一些时间格式化您的代码。按原样阅读几乎是痛苦的。
-
至少,对于模板专业化,您使用
template<>而不是template<class U>。 -
@MikelF 谢谢!!您可以将其发布为解决方案,以便我接受吗
标签: c++ templates vector struct