PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] überladene Member Pointer auseinanderhalten.


del_4901
2007-08-10, 19:56:26
class Foo
{
void Bar(float){}
void Bar(int){}

void bar(int){}
};


Wie man hier sieht habe ich schoen eine Funktion "statisch" überladen.
Wenn ich mir jetzt einen Member Function Pointer hoglen will schreibe ich einfach &Foo::bar, geht hier auch ganz gut, nur bei dem überladenen nicht.

Bei &Foo::Bar kann er (MSVC8) mein Template nichtmehr auflösen, dabei gibt es doch genug "Hinweise" auf das "Ziel". Jetzt frage ich mich ob es da eine Möglichkeit gibt, die beiden außeinander zu halten. &Foo::Bar(int) ... geht leider schonmal nicht ... währe auch zu einfach gewesen.

Neomi
2007-08-10, 22:33:32
Dann mußt du dem Compiler eben noch den ultimativen Hinweis geben:

(void (Foo::*)(float)) &Foo::Bar

del_4901
2007-08-10, 22:59:38
Dann mußt du dem Compiler eben noch den ultimativen Hinweis geben:

(void (Foo::*)(float)) &Foo::Bar

Ha geil, besten Dank! Man lernt nie aus.

BTW: Bin ich der Einzige der diesen Syntax krank findet?

Neomi
2007-08-10, 23:16:43
BTW: Bin ich der Einzige der diesen Syntax krank findet?

Nein, definitiv nicht. Dieses verzwurbelte Gedöhns mußte ich auch erstmal in ein paar Variationen ausprobieren, bevor es anstandslos funktionierte. :D