Ich möchte folgendes tun:Passing Member-Funktion (oder eine Umgehungs)
class A{
private:
//some data
B b;
double f(double);
public:
A(){
b = new B(f); // does not work of course
}
};
class B{
public:
B(double (*func)(double));
};
Klasse B soll ein mathematisches Problem mit der Funktion func angegeben lösen. Klasse A sollte nun B verwenden, um dieses Problem für func = f zu lösen. Die Member-Funktion f greift auf die privaten Daten von A. Das Problem ist natürlich, dass ich nicht einfach einen Zeiger auf Member-Funktion übergeben kann. Ich weiß, es gibt Möglichkeiten, das zu tun, aber B sollte immer noch in der Lage sein, irgendeine Funktion zu übernehmen, nicht nur Mitglieder von A. Bisher habe ich nur f und die Mitglieder von A statische gemacht, aber ich denke, das ist ein ziemlich schlechtes Design . Können Sie sich einen Workaround dafür vorstellen?
Verwenden Sie eine 'std :: -Funktion'. Wenn Sie ein Objekt für "this" in eine Elementfunktion schieben müssen, ist dies jetzt einfach möglich. Wenn die Elementfunktion 'this' nicht verwendet, mache sie zu einer freien Funktion oder' static'. – chris
[Diese Frage] (http://stackoverflow.com/questions/24230726/pointer-to-a-member-function/24231066#24231066) sieht ähnlich aus. – Gluttton
Danke, 'std :: function' sieht gut aus, ich werde das später versuchen. Ich bin nicht wirklich in C++ 11, vielleicht habe ich es deshalb nicht gefunden. – cthl