C++相談室 part9
■ このスレッドは過去ログ倉庫に格納されています
0603598
NGNGBaseクラスが持つ2つのコンテナを統一的なインターフェースで
処理する関数を書きたいのです。つまり
//---------------
template<typename T, typename U>
struct Base {
std::vector<T> mTList;
std::vector<U> mUList;
template<typename V> struct traits {};
struct traits<T> { typedef MyIterator<T> iterator; };
struct traits<U> { typedef MyIterator<U> iterator; };
MyIterator<T> begin(T) { return mTList.begin(); }
MyIterator<T> end(T) { return mTList.end(); }
MyIterator<U> begin(U) { return mUList.begin(); }
MyIterator<U> end(U) { return mUList.end(); }
template<typename V, typename W)
void func(void) {
for (traits<V>::iterator i=begin(V); i!=end(V); ++i) {
W()(i); // 処理
}
}
};
Base<TypeA,TypeB> x;
x.func<TypeA,MyOperation>();
x.func<TypeB,MyOperation>();
//---------------
こんな感じで…。
>>602
4-5行目のstruct traits<T>をstruct traits<typename T>にせよということでしょうか?
文法エラーが出ました…。
■ このスレッドは過去ログ倉庫に格納されています