Hallo,
<br>
<br>
Ich habe ein grosses Problem:
<br>
Ich muss plattform- und compilerunabhängig eine Implementation von event handlern und properties
schreiben.
Ich würde die event handler gerne als callbacks implementieren. Bei Zeigern auf C++-Memberfunktionen geht das allerdings nicht Klassenunabhängig und ohne beim Aufruf die Instanz der Klasse anzugeben, und wegen dem versteckten this-pointer schon gar nicht für Member- und Nichtmemberfunktionen gleichzeitig (letzteres ist nicht unbedingt notwendig).
Borland löst das Problem mit dem Schlüsselwort __closure, aber das untertützen leider nur die Borland-Compiler.
<br>
Properties liessen sich dann mittels templates als Klasse herstellen (den Typ dann per template angeben), wenn man den Konstruktor mit solchen event-handler-pointern für die Schreib- und Lesefunktionen füttern könnte.
Für das Lesen und Schreiben könnte man dann alle möglichen Operatoren überladen, aber ich weiss leider nicht wie das genau geht (was welche Operatorfunktion zurückliefern muss etc.).
__property (Borland) oder __declspec(property) (Microsoft) kann ich aus den genannten Gründen leider nicht verwende.
<br>
<br>
Ich bin für jeden Hinweis sehr dankbar.
<br>
Peter
<br>
<br>
Ich habe ein grosses Problem:
<br>
Ich muss plattform- und compilerunabhängig eine Implementation von event handlern und properties
schreiben.
Ich würde die event handler gerne als callbacks implementieren. Bei Zeigern auf C++-Memberfunktionen geht das allerdings nicht Klassenunabhängig und ohne beim Aufruf die Instanz der Klasse anzugeben, und wegen dem versteckten this-pointer schon gar nicht für Member- und Nichtmemberfunktionen gleichzeitig (letzteres ist nicht unbedingt notwendig).
Borland löst das Problem mit dem Schlüsselwort __closure, aber das untertützen leider nur die Borland-Compiler.
<br>
Properties liessen sich dann mittels templates als Klasse herstellen (den Typ dann per template angeben), wenn man den Konstruktor mit solchen event-handler-pointern für die Schreib- und Lesefunktionen füttern könnte.
Für das Lesen und Schreiben könnte man dann alle möglichen Operatoren überladen, aber ich weiss leider nicht wie das genau geht (was welche Operatorfunktion zurückliefern muss etc.).
__property (Borland) oder __declspec(property) (Microsoft) kann ich aus den genannten Gründen leider nicht verwende.
<br>
<br>
Ich bin für jeden Hinweis sehr dankbar.
<br>
Peter
Comment