私は単純な問題がありますが、C++でファンクターを使用したことがないため、解決方法はわかりません。C++:ファンクショナーと標準:: noobの関数
私は(それは単なる一例である)そのような何かをしたい:
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;
}
ファンクタ/ STD ::機能を使用するための正しい構文でしょうか?
ありがとうございました!
、あなたは何をする正確に何をしようとしていますか? Wikipediaページには典型的な例が示されています。 – Pubby
コードにエラーが多すぎます。 'std :: vector _v'、' double * _x; 'は' _x [i] 'として使われ、' 'unsigned int * _size;'は 'i <_size'や' x> lim'などとして使われます。 –