Funktoren auf Methoden von Basisklassen
-
Hallo,
ich habe folgendes Problem:
In einem Modul sollen Objekte einer API verwendet werden. Da Module über ein Skript steuerbar sein sollen, sollen Methoden dieser externen Objekte in Funktoren gekapselt werden. Das ergibt folgende Situation:
class ExternesObjekt_Basis_Basis {
public:
void getParameter0( int i );
};class ExternesObjekt_Basis {
public:
void getParameter1( int i );
};class ExternesObjekt : public ExternesObjekt_Basis {
};class Modul : API_fuer_Funktoren {
private:
ExternesObjekt ext;
public:
Modul()
{
registerEigenschaft( new AccessFunctor<ExternesObjekt,int>( "getParameter", this->ext, &ExternesObjekt::getParameter1 );
...
}
};Die API_fuer_Funktoren und der AccessFunctor ermöglichen dabei den Zugriff auf die registrierten Methoden über eine einheitliche Schnittstelle.
Das ist sehr schön, so lange ich nur für Methoden aus ExternesObjekt oder ExternesObjekt_Basis Funktoren definiere. Beim Versuch einen entsprechenden Funktor für getParameter0 zu definieren, ist die Konvertierung des Methoden-Pointer nicht möglich, in etwa:
von "__thiscall ExternesObjekt_Basis_Basis::" kann nicht nach "__thiscall Externes_Objekt::" konvertiert werden.
Das mag sogar sinnvoll sein.
Ich kann das Problem umgehen, indem die Methode in Modul gekapselt wird oder indem der Funktor über die Basis-Klasse definiert wird, aber:
Gibt es eine Möglichkeit analog zum constructor oben einen Funktor unter der Verwendung von ExternesObjekt zu definieren?Hilfe wäre klasse!
Peter