我以为我会很聪明,并创建接受输出迭代器的成员函数。这样,我可以避免返回集合或通过引用获取集合。例如:
template <typename TOutIterator>
void getHeaderNames(TOutIterator destination);
template <typename TOutIterator>
void getHeaderValues(std::string const& name, TOutIterator destination);
这些函数会将它们的结果写入传入的任何迭代器。这样,我不必担心我是在写入集合、向量还是 ostream。
现在我感觉没那么聪明了。我想让这些函数虚拟化,这样我就可以在测试中删除实现。不幸的是,模板成员函数不能是虚拟的,这是有道理的。
有没有办法让这些函数保持通用(写入任何东西)并允许它们同时是虚拟的?我想避免将所有内容都写入向量只是为了转身并将其写入标准输出或其他内容。
如果我需要更清楚地解释我的情况,请告诉我。