Учитывая этот класс:
class C
{
private:
struct Foo
{
int key1, key2, value;
};
std::vector<Foo> fooList;
};
Идея состоит в том, что fooList
может быть проиндексирован либо key1
, либо key2
структуры Foo. Я пытаюсь написать функторы для передачи на std::find_if
, чтобы я мог искать элементы в fooList
по каждой клавише. Но я не могу заставить их скомпилировать, потому что Foo
является приватным внутри класса (это не часть интерфейса Си). Есть ли способ сделать это, не подвергая Foo
остальному миру?
Вот пример кода, который не будет компилироваться, потому что Foo
является закрытым в моем классе:
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;
}
};