Как использовать функцию собственного класса в методе for_each?
Предположим, у меня есть этот класс (унаследованный от std :: Vector, это всего лишь пример)
#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();
}
Как мне вызвать for_each, используя метод класса внутри самого класса? Я знаю, что могу использовать ключевое слово static, но как еще можно использовать функциональный объект без использования static?
Я получаю это сообщение об ошибке при компиляции:
for_each.cc:21:55: ошибка: невозможно преобразовать 'C :: преобразование' из типа 'void (C ::) (double)' в тип 'void (C :: *) (double)' for_each (this-> начало (), это-> конец (), преобразование);
Я думаю, что мне нужно добавить.*
или же->*
где-то, но я не могу узнать, где и почему.