假设我有这个类(继承自 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::transformation' 从类型 'void (C::)(double)' 转换为类型 'void (C::*)(double)' for_each(this-> begin(), this->end(), 转换);
我想我需要在某个地方添加.*
或添加,->*
但我不知道在哪里以及为什么。