考虑以下类:
class C
{
private:
struct Foo
{
int key1, key2, value;
};
std::vector<Foo> fooList;
};
这里的想法是,
fooList
可以通过 Foo 结构体的 key1
或 key2
进行索引。我试图编写函数对象传递给 std::find_if
,以便可以通过每个键在 fooList
中查找项目。但是,由于 Foo
在类内部是私有的(它不是 C 接口的一部分),所以我无法使它们编译通过。 有没有一种方法可以在不将 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;
}
};