Ich möchte den Zeiger auf das Objekt und eine Angabe, welche Methode der Funktor von einem Funktor aufgerufen wird mit boost :: function aufrufen und boost :: bind. Dies wird mir erlauben, automatisch die Reihenfolge in einer Reihe von Funktoren zu bestimmen.Bestimmen Sie Objekt und Methode in einem Funktor mit boost :: function und boost :: bind
Der folgende (Pseudo-) Code (siehe POINTER_OF & METHOD_OF) zeigt, was ich versuche zu tun:
class myClassA
{
public:
DoIt(int i) { return i+i; }
};
class myClassB
{
public:
DoItToo(double d) { return d*d; }
};
typedef boost::function0<int> Functor;
myClassA classA;
myClassB classB;
Functor funcA = boost::bind(&myClassA::DoIt, &classA, 10);
Functor funcB = boost::bind(&myClassB::DoItToo, &classB, 12.34);
// Create a vector containing some functors and try to determine the objects
// they are called upon and the methods they invoke
std::vector<Functor> vec;
vec.push_back(funcA);
vec.push_back(funcB);
for (int i = 0; i < vec.size();i++)
{
if (POINTER_OF(vec[i]) == &classA)
{
// This functor acts on classA
if (METHOD_OF(vec[i]) == &myClassA::DoIt)
{
// This functor calls the 'DoIt' method.
}
else if (METHOD_OF(vec[i]) == &myClassB::DoItToo)
{
// This functor calls the 'DoItToo' method.
}
}
// etc...
}
Vielen Dank im Voraus!
Code, was Sie wnat schreiben sieht hässlich aus. Es tut uns leid. Bitte geben Sie zusätzliche Informationen an, was Sie mit Informationen über Zeiger und Methode machen möchten. – bayda
einige Stil Beratung, umbenennen "KlasseA" - es ist keine Klasse, es ist ein Objekt, das eine Instanz einer bestimmten Klasse ist. "instanceA" wäre in Ordnung; "instanceOfClassA" ist besonders ausführlich, würde aber zumindest genau sein. – Aaron