打印类类型向量的内容

时间:2019-04-21 15:04:51

标签: c++

显式模板专业化无法正常工作,模板本身可以正常工作。

模板的专业化将日期类的向量作为参数传递,我不知道如何打印向量的各个值

template <typename T>
void printVector(const std::vector<T> &vec) {
    for (auto i = vec.begin(); i != vec.end(); ++i)
        std::cout << *i<< ' ';
}
template <>
void printVector(const std::vector<Date> &vec) {
    for (auto i = vec.begin(); i != vec.end(); ++i)
        std::cout << *i << ' ';
}

我得到2个错误: 二进制'<<':找不到使用'const Date'类型的右操作数的运算符(或者没有可接受的转换) 和: 没有运算符“ <<”与那里的操作数匹配

1 个答案:

答案 0 :(得分:1)

错误非常清楚:您需要为operator<<类提供Date重载。例如

std::ostream& operator<<(std::ostream& os, const Date& date) { /* ... */ }

或者,您可以在Date的{​​{1}}重载中手动打印出printVector的字段,但这是一种较不灵活的解决方案,因为它将打印逻辑vector<Date>,其中一个打印vector