构造函数在C++中具有函数作为参数

bey*_*ran 0 c++ constructor higher-order-functions

我得到了一些变量依赖于不同功能的对象.换句话说:对象中的变量依赖于多种类型的函数,但应该有多个对象具有相同的这些函数.为了更多的清关,我试图给出一个例子(这不起作用).

#include <iostream>

class A
{
  double size;

  A( double (*f)() )
  {
    size = (*f)();
  };
};

double fun1()
{
  return 42.0;
}


int main()
{
  A a = A( &fun1() );

  std::cout << a.size << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

这当然是一个极小的例子.变量大小取决于某个函数,该函数应该作为参数传递给类.想象一下fun1,fun2作为不同种类的随机数生成器.

我认为C++中的ideomatic方式是一个包含变量的类,从它继承的类被不同对象的函数修改(如果我错误的话,请纠正我).但我的问题是:

是否有可能实现某种高阶构造函数?如果是这样,一个例子会很好.

ps:如果我使用了一些错误的技术术语,我很乐意得到纠正.

pad*_*ddy 5

改成:

A( double (*f)() )
{
    size = f();
};
Run Code Online (Sandbox Code Playgroud)

和:

A a = A( fun1 );
Run Code Online (Sandbox Code Playgroud)

当你传递的&fun1()时候试图调用该函数然后获取其结果的地址.你真正想要的是存储在其中的函数指针本身fun1.