■56901 / inTopicNo.2) |
Re[1]: イテレータを扱うメンバ関数を派生クラスからカスタマイズ |
□投稿者/ (こ) (2回)-(2011/02/04(Fri) 12:20:33)
|
ああ…すみません。
any_iterator ってのがあるんですね。
http://thbecker.net/free_software_utilities/type_erasure_for_cpp_iterators/any_iterator.html
以下のようにすれば何とでもなりそうですね。
もっとまじめに調べればよかった…。失礼いたしました。
class DBInterface {
protected:
typedef IteratorTypeErasure::any_iterator<DBObject, std::input_iterator_tag> any_iterator;
virtual void insert_impl(any_iterator first, any_iterator last) = 0;
public:
template<typename InputIterator>
void insert(InputIterator first, InputIterator last) {
insert_impl(any_iterator(first), any_iterator(last));
}
};
class FooDB : public DBInterface {
protected:
virtual void insert_impl(any_iterator first, any_iterator last) { /* FooDB 独自の挿入処理 */ }
};
class BarDB : public DBInterface {
protected:
virtual void insert_impl(any_iterator first, any_iterator last) { /* BarDB 独自の挿入処理 */ }
};
|
解決済み
|