を通じて静的メンバー関数にアクセスすることは可能std::for_each
ですか?
コーディングしようとしているクラスで問題が発生しました。Foo
メンバーセクションでオブジェクトを初期化するクラスがあり、以下で詳細にBoo
使用される静的メンバー関数内でこれにアクセスする必要があります。std::foreach()
フー。
class Foo {
public:
Foo() {
w = getInstanceOfAnotherClass(0, 0); // this works fine!
}
void Transform();
static inline void processBlock(std::vector<double> &vect);
private:
std::vector<std::vector<double> > data;
Boo* w;
};
問題は次のとおりです。メンバー関数の内部にTransform
は、次のものがあります。
void Foo::Transform()
{
std::for_each(data.begin(), data.end(), processBlock);
}
そして、ProcessBlock
私は次のものを持っています:
void Foo::processBlock(std::vector<double> &vect)
{
std::vector<double> vars = w.getDataBack<double>();
}
返されるエラーはw
、静的メンバー関数でのメンバー 'w' の無効な使用です。これで、問題が何であるかがわかります..しかし、回避策がわからない. 静的ではない別の関数を作成し、この関数を の内部から呼び出すprocessBlock
ことにしましたが、オブジェクトを宣言しないとメンバー関数を呼び出すことができないため、値がリセットされ、w
これは私が望むものではありません.
誰かが助けてくれることを願っています。この投稿は混乱を招きません。