繁体   English   中英

定义结构向量的模板

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM