【发布时间】:2009-06-16 02:37:36
【问题描述】:
我在声明指向类实例的指针的 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() 函数。如果我将函数与这个声明一起(在结构之外),编译器会说它需要一个类型。
现在我的疑虑在这里(我猜不仅是一个,而且是相关的):
- 一组指针的正确声明是什么?
- 比较指针的比较函数的正确声明是什么?
在发帖之前我确实查了很多地方,但我发现这些参考资料令人困惑,并且与我的特殊情况不太相关(尽管我认为它是愚蠢的微不足道 - 实际上,也许这就是原因)。所以,任何好的链接也有很大的帮助!
提前致谢!
【问题讨论】:
-
为我编译(在 g++ 上),除了你的比较中有错误,因为你既要取消引用指针,又要使用间接。
标签: c++ pointers stl containers