ich bin gerade am Basteln und hab da ein kleines Programm, das nicht so recht funktionieren will. Ich seh den Fehler absolut nicht
#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
class MyClass {
public:
void myFunc(int i) { std::cout<<i<<"\n"; }
};
template<typename C, typename R, typename A> // C: Klassentyp, R: Ergebnistyp, A: Argumenttyp
struct mem_fun_bind1_t : public std::unary_function<A, R>
{
C& c; // Referenz auf Aufruferobjekt
R (C::*pMtr)(A); // Funktionszeiger
explicit mem_fun_bind1_t( C& _c, R [b]([/b]C::*_pMtr[b])[/b](A) ) : c(_c), pMtr(_pMtr) // Konstruktor setzt Aufrufer und aufzurufende Methode (Zeiger)
{}
R operator()(A a) // überladen mit Parameter, der von for_each übermittelt wird
{
return (c.*pMtr)(a); // eigentlicher Methodenaufruf
}
};
template<typename C, typename R, typename A> // C: Klassentyp, R: Ergebnistyp, A: Argumenttyp
mem_fun_bind1_t<C, R, A>
mem_fun_bind1(C& c, R (C::*pMtr)(A))
{
return mem_fun_bind1_t<C, R, A>(c, pMtr); // Funktor erzeugen
}
int main() {
MyClass myclass;
std::vector<int> v;
for(int i=0; i<10; ++i) v.push_back(i);
std::for_each(v.begin(), v.end(), mem_fun_bind1(myclass, &MyClass::myFunc)); // gewünschtes Endresultat: a.myFunc(*iterator)
}
Der Fehler dabei lautet:
Zitat
error: no matching function for call to ‘mem_fun_bind1(A&, void (A::*)(int))’
Danke für eure Tipps!
Dieser Beitrag wurde von Witi bearbeitet: 26. Mai 2009 - 07:58

Hilfe
Neues Thema
Antworten

Nach oben


