I want to do the following:
class A{
private:
//some data
B b;
double f(double);
public:
A(){
b = new B(f); // does not work of course
}
};
class B{
public:
B(double (*func)(double));
};
Class B旨在解决由函数func指定的数学问题。现在,Class A应该使用B来解决这个问题,使得func=f。成员函数f访问A的私有数据成员。
问题是,当然我不能简单地传递一个成员函数指针。我知道有方法可以做到这一点,但B仍然应该能够接受任何函数,而不仅仅是A的成员函数。
到目前为止,我只是将f和A的成员变量设为静态的,但我认为这是一个相当糟糕的设计。你能想到任何解决方法吗?
std::function
。如果您需要将一个对象用于成员函数的this
,现在很容易做到。如果成员函数不使用this
,则将其定义为自由函数或静态函数。 - chrisstd::function
看起来不错,我稍后会尝试一下。我不是很熟悉 C++11,所以可能没找到它。 - cthlboost::function
在C++11之前就存在了 :) - chris