std :: function和朋友功能

时间:2019-04-20 14:32:21

标签: c++11 friend std-function

在此示例中,我有一个函数指针(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属性的函数,例如朋友函数或类成员函数。我该怎么办?

1 个答案:

答案 0 :(得分:0)

所以您希望传递给构造函数的任何函数成为朋友?

从严格意义上讲,这是不可能的,因为访问级别(是否为好友)是编译时的问题,并且通常只在运行时确定将哪个值传递给构造函数。

因此,您可以将所有相关功能声明为好友(为什么在这种情况下不仅仅使它们成为方法?),也可以将私有成员作为附加参数传递给它们。像这样:

 $("#row").fadeOut("slow", function() {
             $("#row").remove();
          });