#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
class A{
public:
A():n(4),d(6.6),f(2.7),s("hello my dear"){}
~A(){}
void printAll()
{
std::cout << this->n << "\n" << this->d << "\n" << this->f << "\n" << this->s << "\n\n";
}
private:
int n;
double d;
float f;
std::string s;
};
int main(){
std::vector<A*> v(100);
//filling v ...
std::for_each(v.begin(), v.end(), mem_fun_ref(&A*::printAll)); // this isn't supposed to work ?
return(0);
}
私は多くの解決策を試しましたが、これは最後の解決策ですが、どれも機能していません。C++11より古いC++バージョンの解決策をターゲットにしているので、ラムダを避けたいと思います(また、私は持っていませんラムダでこれを機能させるための問題、私の問題はfor_eachサイクルのみにあります)。
明確さとコードの可読性のために、奇妙なバインディングソリューションを避けたいと思います。また、このソリューションは、プログラムにさらに1つのライブラリを追加する傾向があります。
では、カスタム型へのポインターを参照するときに、for_eachサイクル内のメソッドに簡単にアクセスするにはどうすればよいですか?
ありがとう。