容器的指针

Raf*_*ida 2 c++ containers pointers stl

我在声明一个指向类实例的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;
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用.编译器说它没有找到成员SimulatedDiskFile :: comparator()函数.如果我把这个声明放在函数中(在struct之外),编译器说它期待一个类型.

现在这里是我的怀疑(不仅是一个,而且相关,我猜):

  • 一组指针的正确声明是什么?
  • 比较指针的比较函数的正确声明是什么?

在发布之前我确实在许多地方查找过,但我发现这些引用令人困惑,与我的特殊情况并不完全相关(就像我认为的那样愚蠢 - 实际上,也许这就是原因).所以,任何好的链接也都有很大的帮助!

提前致谢!

Ale*_*lli 5

修复一些故障,

#include <set>

class SimulatedDiskFile {
  public:
    int getFileName() { return 23; }

    struct comparator {
      bool operator () (SimulatedDiskFile* file_1, SimulatedDiskFile* file_2) {
        return (file_1->getFileName() < file_2->getFileName());
      }
    };
};

typedef std::set<SimulatedDiskFile*, SimulatedDiskFile::comparator> FileSet;
Run Code Online (Sandbox Code Playgroud)

编译得很好.