繁体   English   中英

从静态函数访问成员-std :: foreach

[英]Accessing member from a static function - std::foreach

是否可以通过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的值,这不是事实。我想要。

希望有人能提供帮助,并且这篇文章不会引起混淆。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM