このクラスがあるとします (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(), 変換);
.*
またはどこかに追加する必要があると思います->*
が、場所と理由がわかりません。