1

を通じて静的メンバー関数にアクセスすることは可能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これは私が望むものではありません.

誰かが助けてくれることを願っています。この投稿は混乱を招きません。

4

1 に答える 1