クラス インスタンスへのポインターの 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;
上記のコードは機能しません。Compiler は、SimulatedDiskFile::comparator() 関数のメンバーが見つからなかったと言います。この宣言を (構造体の外側に) 使用して関数を配置すると、コンパイラは、型が必要であると言います。
ここに私の疑問があります(1つだけではなく、関連していると思います):
- 一連のポインターの正しい宣言は何ですか?
- ポインターを比較する比較関数の正しい宣言はどれですか?
投稿する前に多くの場所を調べましたが、参考文献が紛らわしく、私の特別なケースとはあまり関係がありませんでした (私が思うに、ばかばかしいほど些細なことです - 実際、これが原因かもしれません)。したがって、適切なリンクも非常に役立ちます。
前もって感謝します!