【问题标题】:template for a vector of defined struct已定义结构的向量的模板
【发布时间】: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&lt;&gt; 而不是template&lt;class U&gt;
  • @MikelF 谢谢!!您可以将其发布为解决方案,以便我接受吗

标签: c++ templates vector struct


【解决方案1】:

执行模板特化时,适合您的情况的正确语法是 template&lt;&gt; 而不是 template&lt;class U&gt;

http://en.cppreference.com/w/cpp/language/template_specialization

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多