显式模板专业化无法正常工作,模板本身可以正常工作。
模板的专业化将日期类的向量作为参数传递,我不知道如何打印向量的各个值
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'类型的右操作数的运算符(或者没有可接受的转换) 和: 没有运算符“ <<”与那里的操作数匹配
答案 0 :(得分:1)
错误非常清楚:您需要为operator<<
类提供Date
重载。例如
std::ostream& operator<<(std::ostream& os, const Date& date) { /* ... */ }
或者,您可以在Date
的{{1}}重载中手动打印出printVector
的字段,但这是一种较不灵活的解决方案,因为它将打印逻辑vector<Date>
,其中一个打印vector
。