Hace poco hice una pregunta sobre la eliminación de elementos de un vector. Bueno, la solución que obtuve funciona, pero no la entiendo, y no encuentro ninguna documentación que la explique.C++ Operator() paréntesis sobrecarga
struct RemoveBlockedHost {
RemoveBlockedHost(const std::string& s): blockedHost(s) {}
// right here, I can find no documentation on overloading the() operator
bool operator() (HostEntry& entry) {
return entry.getHost() == blockedHost || entry.getHost() == "www." + blockedHost;
}
const std::string& blockedHost;
};
para ser utilizado como:
hosts.erase(std::remove_if(hosts.begin(), hosts.end(), RemoveBlockedHost(blockedhost)), hosts.end());
Miré a la documentación de std :: remove_if, se dice que es posible pasar de una clase en lugar de una función sólo cuando la clase sobrecarga el() operador. Sin información alguna.
¿Alguien sabe de enlaces a:
-
Un libro que contiene ejemplos/Explainations
-
O, un enlace a la documentación en línea/tutoriales
Ayuda con esto sería apreciado. No me gusta agregar código a mi software a menos que lo entiendo. Sé que funciona, y estoy familiarizado (algo) con la sobrecarga del operador, pero no sé para qué sirve el operador().
Muchas gracias! Tan pronto como me lo permita, aceptaré su respuesta (es decir, debo esperar 10 minutos) – FurryHead