定义结构矢量的模板

时间:2017-01-27 19:27:49

标签: c++ templates vector 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";
    }
}

由于某种原因,它仍在调用矢量版本并打印尺寸

1 个答案:

答案 0 :(得分:1)

执行模板专精化时,您案例的正确语法为template<>而不是template<class U>

UIDocumentInteractionController Uti