Teniendo en cuenta esta clase:¿Puedo escribir functors usando una estructura anidada privada?
class C
{
private:
struct Foo
{
int key1, key2, value;
};
std::vector<Foo> fooList;
};
La idea aquí es que fooList
pueden ser indexados por cualquiera key1
o key2
de la struct Foo. Intento escribir functors para pasar a std::find_if
para poder buscar elementos en fooList
con cada tecla. Pero no puedo hacer que compilen porque Foo
es privado dentro de la clase (no es parte de la interfaz de C). ¿Hay alguna manera de hacerlo sin exponer Foo
al resto del mundo?
He aquí un ejemplo de código que no se compilará porque Foo
es privado dentro de mi clase:
struct MatchKey1 : public std::unary_function<Foo, bool>
{
int key;
MatchKey1(int k) : key(k) {}
bool operator()(const Foo& elem) const
{
return key == elem.key1;
}
};
+1, me olvidé de simplemente anunciar los funtores como estructuras anidadas. He corregido un error tipográfico (copiar y pegar-o?) Para ti también. –
@Kristo: copiar y pegar-o? usted apuesta-o! ;) –