У меня возникли проблемы с объявлением набора указателей 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(). Если я поставлю функцию с этим объявлением (вне структуры), компилятор говорит, что он ожидал тип.
Теперь вот ком мои сомнения (не только один, но связанные, я думаю):
- Что такое правильное заявление для набора указателей?
- Какая правильная декларация для сравнения funcion, которая сравнивает указатели?
я выглядел во многих местах, прежде чем отправлять, но я нашел ссылки запутанные и не совсем связаны с моим особым случаем (как глупо тривиально, как я думаю, что это - на самом деле, может быть, это причина). Таким образом, любые хорошие ссылки тоже очень помогают!
Заранее благодарен!
Скомпилирует для меня (на g ++), за исключением того, что у вас есть ошибка в сравнении, потому что вы оба разыскиваете указатели, а затем также используете косвенные действия. –