Como usar uma função da própria classe no método for_each?
Suponha que eu tenho essa classe (herdada de std :: Vector, é apenas um exemplo)
#include <vector>
using namespace std;
template <class T>
class C : public vector<T> {
// I don't want to use static keyword
void transformation(T i) {
i *= 100;
}
public:
void method() {
for_each(this->begin(), this->end(), transformation);
}
};
int main() {
C<double> c;
for (int i=-3; i<4; ++i) {
c.push_back(i);
}
c.method();
}
Como chamo for_each usando o método de classe dentro da própria classe? Eu sei que posso usar a palavra-chave estática, mas o que existe de outra maneira como usar um objeto de função sem usar a estática?
Recebo esta mensagem de erro ao compilar:
for_each.cc:21:55: erro: não é possível converter 'C :: transformação' do tipo 'void (C ::) (double)' para o tipo 'void (C :: *) (double)' for_each (this-> begin (), this-> end (), transformação);
Acho que preciso adicionar.*
ou->*
em algum lugar, mas não consigo descobrir onde e por quê.