[英]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.