c++ - How to pass pointer to template function to another function -
i got pointer function:
template<typename t> struct f { typedef bool( *type)( t, t ); }; template <typename t> bool mniejsze (t pierwszy , t drugi){ if( pierwszy < drugi) return true; return false; }
then define function minamax
template <typename t> t minmax(t a[], int n,bool, bool (*f.type)(t,t)){ return f(a[0],a[1]); }
then want pass function minmax
f<int>::type f1 = mniejsze<int>; cout<<f1( 3, 4)<<endl;; int t[] = {1,2,3,4,5,6,7,8,9,10}; int n = 10; minmax(t,n,*f1);
but get:
c:\documents , settings\duke\moje dokumenty\andrzej1\adsadasd\main.cpp|57|error: expected ',' or '...' before '.' token| c:\documents , settings\duke\moje dokumenty\andrzej1\adsadasd\main.cpp||in function 'int main()':| c:\documents , settings\duke\moje dokumenty\andrzej1\adsadasd\main.cpp|72|error: no matching function call 'minmax(int [10], int&, bool (&)(int, int))'| c:\documents , settings\duke\moje dokumenty\andrzej1\adsadasd\main.cpp|68|warning: unused variable 'f2'| ||=== build finished: 2 errors, 1 warnings ===|
template<typename t> t minmax(t a[], int n, bool b, typename f<t>::type fp ){ if ( fp( a[0], a[1])) return 1; return -1; } int main() { // code goes here f<int>::type f1 = mniejsze<int>; bool b = f1( 3, 4); int a[] = { 3, 4}; std::cout << minmax<int>( a, 0, 0, f1); return 0; }
Comments
Post a Comment