类类型向量的打印内容

Printing content of class type vector

本文关键字:打印 类型 向量      更新时间:2023-10-16

显式模板专用化不起作用,模板本身工作正常。

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

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"的右操作数的运算符(或者没有可接受的转换(和:没有运算符"<<"匹配操作数

错误很明显:您需要为Date类提供operator<<重载。

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

或者,您可以在需要vector<Date>printVector重载中手动打印出Date字段 - 但是,这是一个不太灵活的解决方案,因为它将打印vector的逻辑与打印Date的逻辑耦合在一起。