[英]template for a vector of defined struct
我有以下数据结构
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>
。
http://en.cppreference.com/w/cpp/language/template_specialization
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.