Dato questa classe:Posso scrivere funtori usando una struttura nidificata privata?
class C
{
private:
struct Foo
{
int key1, key2, value;
};
std::vector<Foo> fooList;
};
L'idea è che fooList
può essere indicizzato da uno o key1
key2
della struct Foo. Sto cercando di scrivere i functor per passare a std::find_if
in modo da poter cercare gli elementi in fooList
da ogni chiave. Ma non riesco a farli compilare perché Foo
è privato all'interno della classe (non fa parte dell'interfaccia di C). C'è un modo per farlo senza esporre Foo
al resto del mondo?
Ecco un esempio di codice che non viene compilato perché Foo
è privato all'interno della mia classe:
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, ho dimenticato semplicemente in avanti dichiarando che anche i funtori sono strutture annidate. Ho corretto un refuso (copy-and-paste-o?) Anche per te. –
@ Kristo: copia-e-incolla-o? hai scommesso-o! ;) –