Ich habe ein einfaches Problem, aber ich weiß nicht, wie man es löst, weil ich Funktoren in C++ nie verwendet habe.C++: Funktoren und Std :: Funktion für ein Noob
Ich mag so etwas tun (es ist nur ein Beispiel):
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;
}
Was die korrekte Syntax verwenden functors/std :: Funktionen sein würde?
Vielen Dank!
Was genau wollen Sie tun? Die Wikipedia-Seite zeigt typische Beispiele. – Pubby
Sie haben viel zu viele Fehler in Ihrem Code. 'std :: vector _v',' double * _x; 'wird als' _x [i] 'verwendet,' unsigned int * _size; 'wird als' i <_size' und 'x> lim' usw. verwendet. –