Здравствуйте,
Захотелось написать примерно такой код:
test_struct
{
template< T1 >
test( IComInterface * obj, HRESULT ( __stdcall IComInterface ::*method )( T1 ) )
{
std::cout << "method returned " << GetResultString( ( obj -> *method ) () );
}
template< T1, T2 >
test( IComInterface * obj, HRESULT ( __stdcall IComInterface ::*method )( T1, T2 ) )
{
T1 temp1();
T2 temp2();
std::cout << "method returned " << GetResultString( ( obj -> *method ) ( temp1, temp2 ) );
}
}
template< class T1 >
void TestMethod( IComInterface * obj, HRESULT ( __stdcall IComInterface ::*method )( T1 ) )
{
test_struct().test( obj, method );
}
template< class T1, class T2 >
void TestMethod( IComInterface * obj, HRESULT ( __stdcall IComInterface ::*method )( T1, T2 ) )
{
test_struct().test( obj, method );
}
VC 7.1 попытался вывести аргументы, но что-то у него не заладилось... Сообщение об ошибке сейчас не скажу, но он сказал что не может покастить указатель на функцию в тип аргумента функции...
Объясните, это я в отпуск хочу, или у него какие-то проблемы?