リスト(list)の連結(merge)

解決


ハイホー  2011-05-29 16:05:04  No: 72672  IP: 192.*.*.*

お世話になります。

クラス型データを2つのリストに設定、そのリストを結合したいのですが、
下記のようにするとコンパイルエラーとなってしまいます。クラス型データ
のリストを連結するにはどのようにしたらよいでしょうか。
どうかご教授ください。

#include <iostream>
#include <list>
#include <functional>

using namespace std;

// データクラス
class PersonalInfo {
    string name;
    int age;
public:
    // set
    void setParam(string name, int age) {
        this->name = name;
        this->age = age;
    }
    // get
    void getParam(string *name, int *age) {
        *name = this->name;
        *age = this->age;
    }
};
int main() {

    list<PersonalInfo> intlist1;
    list<PersonalInfo> intlist2;

    // データ作成
    PersonalInfo pinf[2];
    pinf[0].setParam("oda", 31);
    pinf[1].setParam("toyotomi", 45);

    // データ追加
    intlist1.push_back( pinf[0] );
    intlist2.push_back( pinf[1] );

    // リスト連結
    intlist1.merge(intlist2);           ★コンパイルエラー

    return 0;
}

編集 削除
ハイホー  2011-05-29 16:23:51  No: 72673  IP: 192.*.*.*

解決しました。
お騒がせしました。

mergeの時にもソートのための大小比較が実行されているんですね。
演算子<, > をオーバーロードすることで解決できました。

編集 削除