C++ class 变量 std::function 具有默认功能并且可以更改

C++ class variable std::function which has default functionality and can be changeable

需要在 class 中有一个函数变量,它具有默认功能并且它的功能可以被覆盖。例如我如何 liked/wanted 做(不幸的是不成功):

#include <iostream>
#include <functional>
using namespace std;

class Base
{
  public:

  std::function<bool(void)> myFunc(){
    cout << "by default message this out and return true" << endl;
    return true;}
};

bool myAnotherFunc()
{
 cout << "Another functionality and returning false" << endl;
 return false;
}

int main()
{
  Base b1;
  b1.myFunc();    // Calls myFunc() with default functionality
  Base b2;
  b2.myFunc = myAnotherFunc;
  b2.myFunc();   // Calls myFunc() with myAnotherFunc functionality
  return 0;
}

我知道,这段代码无法编译。 任何人都可以帮助解决这个问题,或者推荐一些东西。 不需要是std::function,如果有另一种方法可以实现这个逻辑。也许应该使用 lambda?!

更改为:

class Base {
  public:
  std::function<bool()> myFunc = [](){
    cout << "by default message this out and return true" << endl;
    return true;
  };
};

Live Demo

修改最少的解决方案:

http://coliru.stacked-crooked.com/a/dbf33b4d7077e52b

class Base
{
  public:
  Base() : myFunc(std::bind(&Base::defAnotherFunc, this)){}

  std::function<bool(void)> myFunc;

  bool defAnotherFunc(){
    cout << "by default message this out and return true" << endl;
    return true;}
};