C++相談室 part41
■ このスレッドは過去ログ倉庫に格納されています
0078デフォルトの名無しさん
2005/07/04(月) 18:26:50stringの代わりにオブジェクト自体、はあんまりかも。ポリモフィズムの意味が薄れるから。
class Interfaceに純粋仮想関数 serialize() を用意し、
その返値を pair<string, string>とかにして、各派生クラスで:
pair<string, string> serialize() {
string str = ...;
return make_pair("Foo", str); // strは"FooDataA FooDataB ..."
};
template <typename T, typename S>
void serialize(T first, T last, S& container) {
while (first != last) {
pair<string, string> data = (*first++)->serialize();
container[data.first].push_back(data.second);
}
};
vector<Interface*> interfaces;
map<string, vector<string> > serial_map;
serialize(interfaces.begin(), interfaces.end(), serial_map);
もっといい書き方がありそう
■ このスレッドは過去ログ倉庫に格納されています