在此示例中,我有一个函数指针(std :: function)作为类的属性。因此,我可以将void myFunction(void)形式的任何函数关联到我的类。
#include <iostream>
#include <functional>
class Example{
private:
int variable=4;
public:
std::function<void(void)> myNonMemberFunction;
Example(void){
}
Example(std::function<void(void)> MyNonMemberFunction){
myNonMemberFunction=MyNonMemberFunction;
}
};
void PrintPlop(){
std::cout<<"plop"<<std::endl;
}
int main() {
Example example(PrintPlop);
example.myNonMemberFunction();
}
现在,我想做同样的事情,但是要使用一个已访问了class属性的函数,例如朋友函数或类成员函数。我该怎么办?
答案 0 :(得分:0)
所以您希望传递给构造函数的任何函数成为朋友?
从严格意义上讲,这是不可能的,因为访问级别(是否为好友)是编译时的问题,并且通常只在运行时确定将哪个值传递给构造函数。
因此,您可以将所有相关功能声明为好友(为什么在这种情况下不仅仅使它们成为方法?),也可以将私有成员作为附加参数传递给它们。像这样:
$("#row").fadeOut("slow", function() {
$("#row").remove();
});