Ich habe zwei Klassen:Vererbung mit den Mitgliedfunktionszeigern und Vorlagen
class A {
public:
bool funA();
};
class B : public A {
pubic:
bool funB();
};
und eine Templat-Funktion, die einen Funktionszeiger nimmt und ruft sie dann gegen eine Liste von B:
template <typename T>
std::vector<T> getFunc(T (B::func*)()) {
....iterator through list of B's calling func....
}
Wenn ich versuchen, getFunc(B::funA)
aufrufen Ich bekomme einen Kompilierfehler, dass "keine getFunc (A :: funA) existiert ..."
Ich kann das Problem lösen, indem Sie einfach eine zweite getFunc
t erstellen Hut nimmt A::func*
anstelle von B ::, aber jetzt habe ich zwei Funktionen, die genau dasselbe tun. Gibt es eine Möglichkeit für mich, nur mit einer Implementierung von getFunc
zu enden?
EDIT: Ich brauche eine vor C++ 11 Lösung.
Welcher Header ist result_of_t in? #include bekomme ich keine solche Datei. –
mjr
@mjr Aktivieren Sie C++ 11 ('-std = C++ 11'). – 0x499602D2
@mjr Konnten Sie es zur Arbeit bringen? – 0x499602D2