クラスインスタンスへのポインタのSTLセットを宣言する際に問題があります。具体的には、私はこのシナリオを持っています:ポインタのコンテナ
class SimulatedDiskFile {
private:
// ...
public:
// ...
struct comparator {
bool operator() (SimulatedDiskFile* const& file_1, SimulatedDiskFile* const& file_2) {
return ((*file_1)->getFileName() < (*file_2)->getFileName());
}
};
}
typedef set<SimulatedDiskFile*, SimulatedDiskFile::comparator> FileSet;
上記のコードは機能しません。コンパイラによると、メンバーSimulatedDiskFile :: comparator()関数が見つかりませんでした。私はこの宣言(構造体の外)で関数を置く場合、コンパイラはそれが型を期待していると言います。
今ここcomの私の疑問(だけではなく1、しかし関連、私は推測する):
- ポインタのセットのための正しい宣言は何ですか?
- ポインタを比較する比較関数の正しい宣言は何ですか?
私は投稿前に多くの場所を調べましたが、私は参照が混乱していて、私の特別なケースにはあまり関連していないことを発見しました(私はそれが実際だと思うほど些細なものです。だから、良いリンクも大いに役立ちます!
ありがとうございます!いくつかの不具合を修正
私はg ++でコンパイルします。ただし、ポインタの逆参照と間接参照の両方を使用しているため、比較にエラーがあります。 –