【发布时间】:2012-04-04 03:16:46
【问题描述】:
我有一个简单的问题,但我不知道如何解决,因为我从未在 C++ 中使用过函子。
我想做类似的事情(这只是一个例子):
class MyClass
{
void applyFunction(myFunction); /* WRONG SYNTAX */
double *_x;
unsigned int *_size;
};
void MyClass::applyFunction(myFunction) /* WRONG SYNTAX */
{
for (unsigned int i = 0; i < _size; ++i)
myFunction(_x[i], 10.);
}
class OtherClass
{
void myFunction1(double x, double lim);
void myFunction2(double x, double lim);
std::vector _v;
};
void OtherClass::myFunction1(double x, double lim)
{
_v.clear();
if (x > lim)
_v.push_back(x);
}
void OtherClass::myFunction2(double x, double lim)
{
_v.clear();
if (x < lim)
_v.push_back(x);
}
int main()
{
MyClass myClass;
OtherClass otherClass;
myClass.applyFunction(otherClass.myFunction1); /* WRONG SYNTAX */
std::cout<<otherClass._v.size()<<std::endl;
myClass.applyFunction(otherClass.myFunction2); /* WRONG SYNTAX */
std::cout<<otherClass._v.size()<<std::endl;
return 0;
}
使用 functors/std::functions 的正确语法是什么?
非常感谢!
【问题讨论】:
-
你到底想做什么?维基百科页面显示了典型示例。
-
您的代码中有太多错误。
std::vector _v、double *_x;用作_x[i]、unsigned int *_size;用作i < _size和x > lim等
标签: c++ functor std-function