在下面的示例中,我需要定义一个函数来使用 getHappiness(Animal*) 方法中的某些规则来比较我的对象。该方法不能是静态的并且相当复杂。我需要比较定义中的指针来调用 getHappiness 方法。
所以我的问题是:如何将指针传递给此方法,当我将元素插入地图时它会自动调用。而且似乎我不能实例化比较结构并将指针传递给构造函数。
我做错什么了吗?也许有另一种方法来定义比较函数?
struct Compare {bool operator()(Animal* const, Animal* const) const;};
bool
Compare::operator()(Animal* const a1, Animal* const a2) const {
Zoo* zoo; // somehow I need to get access to the Zoo instance here
if (zoo->getHappiness(a1) > zoo->getHappiness(a2)) return true;
return false;
}
Class Zoo(){
std::multimap<Animal*, Man*, Compare> map;
int getHappiness(Animal*); // cannot be static
}
int main(){
...
Zoo zoo;
zoo.map.insert(...);
...
}