Je fais une enveloppe de pointeur de méthode comme ceci:pointeur de méthode Templated - ne peut pas correspondre pointeur pour argument de la fonction
template<typename OBJECT, typename... ARGS>
method_wrapper<ARGS...> _getWrapper(OBJECT* object, void (OBJECT::*method)(ARGS...))
{
//irrelevant
}
Le problème est juste à l'appel de _getWrapper
:
class TestClass
{
void TestMethod(int a, float b, bool c)
{
std::cout<<a<<std::endl;
std::cout<<b<<std::endl;
std::cout<<c<<std::endl;
}
};
int main()
{
TestClass testObj;
method_wrapper<int, float, bool> wrap = _getWrapper<int, float, bool>(&testObj, TestClass::TestMethod);
wrap.callInternal(1000, 3.14, true);
//...
system("pause");
return 0;
}
Non importe de quelle manière j'essaie de passer les arguments dans _getWrapper, il me dit encore:
aucune instance de la fonction surchargée correspond à la liste des arguments
Does not OBJECT::*method
match de TestClass::TestMethod
directement? J'ai également essayé &TestClass::TestMethod
, ne correspond pas non plus.
Oui, ça l'a corrigé, merci –