Chciałbym rozszerzyć klasę std::map<string,string> o możliwość rzutowania na bool, żeby można było łatwo sprawdzić czy obiekt jest pusty czy ma jakieś elementy. Zrobiłem coś takiego:
class DBRow: public std::map<string,string> {
public:
operator bool();
};
DBRow::operator bool() {
return !this->empty();
}
I teraz chcę zrobić:
DBRow r;
r["name"] = "a";
if(r) {
cout << "ok";
}
No i mi wyświetla komunikat na drugiej linii
error: ambiguous overload for ‘operator[]’ in ‘r["name"]’
note: candidates are: operator[](int, const char*) <built-in>
Dlaczego tak się dzieje? Dodam, że ze zwykłym std::map przypisywanie działa:
std::map<string,string> s;
s["name"] = "a";
Jak poprawnie dodać do std::map konwersję na bool?