diese Klasse Gegeben:Kann ich Funktoren mit einer privaten verschachtelten Struktur schreiben?
class C
{
private:
struct Foo
{
int key1, key2, value;
};
std::vector<Foo> fooList;
};
Die Idee dabei ist, dass fooList
entweder durch key1
oder key2
der Struktur Foo indiziert werden können. Ich versuche Funktoren zu schreiben, die ich an std::find_if
weiterleiten kann, damit ich mit jeder Taste Gegenstände in fooList
nachschlagen kann. Aber ich kann sie nicht kompilieren, weil Foo
innerhalb der Klasse privat ist (es ist nicht Teil der C-Schnittstelle). Gibt es eine Möglichkeit, dies zu tun, ohne Foo
dem Rest der Welt auszusetzen?
Hier ist ein Beispiel-Code, der nicht kompiliert, weil Foo
in meiner Klasse ist privat:
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, vergaß ich einfach weiter zu erklären, die Funktoren zu verschachtelten Strukturen als auch. Ich habe auch einen Tippfehler (copy-and-paste-o?) Für Sie behoben. –
@Kristo: Kopieren und Einfügen-o? du wette-o! ;) –