nac*_*o4d 26 c c++ parameters operator-keyword
我想要一个评估2个bool变量的函数(比如真值表)
例如:
以来
T | F:T
然后
myfunc('t', 'f', ||); /*defined as: bool myfunc(char lv, char rv, ????)*/
Run Code Online (Sandbox Code Playgroud)
应该回归真实;
我怎么能传递第三个参数?(我知道可以将它作为char*传递但是我必须有另一个表来比较运算符字符串,然后执行我想避免的操作)
是否可以在函数/方法中传递^(XOR)或||(OR)或&&(AND)等运算符?
提前致谢
ybu*_*ill 26
限定:
bool myfunc(char lv, char rv, boost::function<bool(bool,bool)> func);
Run Code Online (Sandbox Code Playgroud)
如果你有提升,或者
bool myfunc(char lv, char rv, std::function<bool(bool,bool)> func);
Run Code Online (Sandbox Code Playgroud)
如果你有C++ 0x编译器,或者
template<class Func> bool myfunc(char lv, char rv, Func func);
Run Code Online (Sandbox Code Playgroud)
如果你想让它成为一个模板.然后你可以打电话:
myfunc('t', 'f', std::logical_or<bool>());
Run Code Online (Sandbox Code Playgroud)
@ybungalobill发布了一个C++正确答案,你应该坚持下去.如果你想传递运算符,函数将不起作用,但宏将完成工作:
#define MYFUNC(lv, rv, op) ....
// Call it like this
MYFUNC('t', 'f', ||);
Run Code Online (Sandbox Code Playgroud)
小心,宏是邪恶的.
归档时间: |
|
查看次数: |
15796 次 |
最近记录: |