我有以下数据结构
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";
}
}
由于某种原因,它仍在调用矢量版本并打印尺寸
答案 0 :(得分:1)
执行模板专精化时,您案例的正确语法为template<>
而不是template<class U>
。