我有一个实用程序函数,它接受两个值,如果两个值满足某个条件,则在另一个对象上执行某些操作。
因此,效用函数必须将成员函数作为std:函数,有时也作为自由流动函数。
class A
{
public:
void fun(int a) {}
};
template <typename T>
bool ifSet(T a, T b, std::function<void(T)> f )
{
if (a == b) return false;
else return f(b);
}
int main() {
auto p = std::make_shared<A>(new A);
std::cout<< ifSet(10, 10, std::bind(A::fun, p, std::placeholders::_1));
上面的代码是我的虚拟实现,但不起作用。有人可以建议我更好的代码吗?
答案 0 :(得分:2)
你的
std::function<void(T)> f
返回 void ,并将其用作 bool ifSet()函数
的返回值