ich habe auf Arbeit ein Template-Problem und hoffe, ihr könnt mir sagen, ob es dafür vielleicht eine klassische Lösung gibt. Folgender minimaler Beispielcode:
Code: Alles auswählen
struct Test {
virtual void Foo(const int& i) = 0;
};
template <typename ArgumentType>
void CallDatShiat(void (Test::*method)(ArgumentType), ArgumentType p) {
... do something
}
void SomewhereElse(const int& k)
{
CallDatShiat(&Test::Foo, k);
}
Was stattdessen passiert: der Compiler ermittelt conflicting types für den ArgumentType, nämlich im Member Function Pointer (völlig korrekt) als const int&, aber im Parameter p nur ohne alle Qualifizierer als int.
Wie kann ich das lösen, so dass ich der Funktion jeweils einen Member Function Pointer geben kann und der Compiler dann genau die Parameter auch in der weiteren Parameterliste nimmt? Gibt's da irgendne klassische Lösung?
Danke im Voraus.