鑑於這種類:我可以使用私有嵌套結構來編寫函子嗎?
class C
{
private:
struct Foo
{
int key1, key2, value;
};
std::vector<Foo> fooList;
};
的這裏的想法是,fooList
可以通過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;
}
};
+1,我忘記了簡單地向前聲明仿函數是嵌套結構。我也修復了一個錯字(複製和粘貼o?)。 – 2010-03-22 17:00:28
@Kristo:複製並粘貼o?你打賭 - 哦! ;) – 2010-03-22 20:43:08