B
Bruce !C!+
as we known , we can use function pointer as:
float Minus (float a, float b) { return a-b; }
float (*getOp())(float, float)
{
return &Minus;
}
int main()
{
float (*opFun)(float, float) = NULL;
opFun= getOp();
cout<< (*opFun)(3,4)<<endl;
}
but, if Minus() is a template such as
template <typename T>
T Minus (T a, T b) { return a-b; }
i had to write getOp() such as:
template <typename T>
T (*getOp())(T, T)
{
return &Minus;
}
int main()
{
cout<< (*getOp())(3,4)<<endl; //compile error: no matching function
for call to ‘getOp()’
}
why "no matching function for call to ‘getOp()’" ???
an if i write main() such as:
template <typename T> //compile error: expected primary-expression
before ‘template’; expected `;' before ‘template’
T (*opFun)(T, T) = NULL;
opFun=getOp(); //compile error:‘opFun’ was not declared in this
scope; no matching function for call to ‘getOp()’
cout<< (*opFun)(3,4)<<endl;
what shall i do? or how to edit my source code to fix this?
thanks all of you!
float Minus (float a, float b) { return a-b; }
float (*getOp())(float, float)
{
return &Minus;
}
int main()
{
float (*opFun)(float, float) = NULL;
opFun= getOp();
cout<< (*opFun)(3,4)<<endl;
}
but, if Minus() is a template such as
template <typename T>
T Minus (T a, T b) { return a-b; }
i had to write getOp() such as:
template <typename T>
T (*getOp())(T, T)
{
return &Minus;
}
int main()
{
cout<< (*getOp())(3,4)<<endl; //compile error: no matching function
for call to ‘getOp()’
}
why "no matching function for call to ‘getOp()’" ???
an if i write main() such as:
template <typename T> //compile error: expected primary-expression
before ‘template’; expected `;' before ‘template’
T (*opFun)(T, T) = NULL;
opFun=getOp(); //compile error:‘opFun’ was not declared in this
scope; no matching function for call to ‘getOp()’
cout<< (*opFun)(3,4)<<endl;
what shall i do? or how to edit my source code to fix this?
thanks all of you!