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