Witam.
Mam taki fragment kodu, a raczej chciałbym żeby to tak wyglądało (o ile to w ogóle możliwe).
class foo {
public:
foo(const char *x) {
this->str = strdup(x);
}
char *str;
};
int main() {
foo x("test");
foo y("ala");
map<foo*, int> m;
m.insert(pair<foo*, int>(&x, 1));
m.insert(pair<foo*, int>(&y, 2));
foo a("test");
map<foo*, int>::iterator it = m.find(&a);
/* ... */
}
Wydaje mi się że trzeba by zdefiniować jakoś mechanizm porównywania który wykorzystuje find, no bo przecież skąd ma wiedzieć jak porównać obiekty foo. Wiem, że można podać klasę porównującą przy tworzeniu mapy
map<foo*, int, klasa>
ale mimo usilnych prób nie udało mi się zmusić tego do działania.
Czy taki mechanizm w ogóle jest możliwy do zaimplementowania?