1

是否可以通过 访问静态成员函数std::for_each

我在尝试编写代码时遇到了问题。我有一个类Foo,它在成员部分初始化一个对象,Boo我需要在下面详细使用的静态成员函数内部访问它std::foreach()

Foo.h

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

1

Foo我这样做的方式是使用函数调用而不是静态函数。采用

void processBlock(std::vector<double> &vect);

std::for_each(data.begin(),data.end(),std::bind(&Foo::processBlock,this,_1))

于 2013-08-16T19:30:43.810 回答