Re: Вывод аргументов указателя на ф-цию
От: Bell Россия  
Дата: 06.12.05 15:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте,

А>Захотелось написать примерно такой код:

А>
А>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();//Старые грабли - объявление функции temp1 без аргументов с типом возвращаемого значения T
А>    T2 temp2();//Аналогично
А>    std::cout << "method returned " << GetResultString( ( obj -> *method ) ( temp1, temp2 ) );
А>  }
А>}

//Ну и зачем понадобилась test_struct?
А>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 );
А>}
А>


А>Объясните, это я в отпуск хочу, или у него какие-то проблемы?

Смотри коментарии в коде
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.