我正在学习函数指针并遇到了一段代码here.
假设+
作为运算符/函数
void FunctionA (float a, float b, float (*pt2Func)(float, float))
{
float result = pt2Func(a, b); // call using function pointer
}
void FunctionB ()
{
Switch(2, 5, /* '+' specifies function 'Plus' to be executed */ '+');
}
所以我尝试了一点,这甚至没有编译。
问。为什么我不能使用'<'作为运营商?
问。如果没有那么该函数的用户是否需要编写一个单独的代码来比较两个已经存在比较的东西......?
template <typename T>
bool compare (T a,T b,bool (*compareFunction) (T ,T ))
{
return compareFunction (a,b);
}
int main ()
{
int a=5,b=6;
if (compare<int>(a,b,'<'))
cout<<"Sucess";
else
cout<<"Post this in stack overflow ";
return 0;
}
更新:
有些评论建议我使用这个
(template <typename T, typename F> bool compare(T a, T b, F func))
但是如果我使用它,那么这只适用于standard operators
std::less<int>
。
我希望我的函数适用于标准和非标准运算符(通过它们的功能定义)。
所以这个问题仍然没有答案。