【发布时间】:2020-08-07 06:55:14
【问题描述】:
我正在尝试将逻辑运算符函数分配给变量,但无法使其工作。我正在使用:
function<bool(double,double)> opFunct = less<bool>();
double highorlow = pOut.high;
if(pCheck){
opFunct = greater<bool>();
highorlow = pOut.low;
}
if(opFunct(highorlow,pStay.middle){
//never gets done
}
这段代码的问题是,无论 highorlow,pStay.middle double 是什么,它都会返回 false。
我错过了什么?
谢谢
【问题讨论】:
-
这看起来设计过度并且存在语法问题。
std::function不是轻量级对象。为什么不直接使用一对ifs? -
我正在从我的 python 项目中提取代码并尝试匹配。稍后会优化。只是更想知道以后如何做:)
-
less<bool>()比较两个布尔值是否小于。你想要less<double>()和类似的greater<double>()。错误行为是因为双精度数被转换为布尔值(0 为假,其他为真)。由于您的数字可能都是非零的,因此您正在比较 true 是否小于 true。
标签: c++ function variables logical-operators