Как передать тело функции в другую функцию?

Например, есть функция в классе:

Class Foos
{
    public:
    void Foo(){
       
    }
}


void Foo2()
{
    int a = 2+2;
    std:cout << a;
}

int main()
{
    Foos foo;
    //foo.Foo() = Foo2; Как мне сюда передать тело функции? 
}

Ответы (1 шт):

Автор решения: Harry

Вы этого хотите?

#include <iostream>
#include <iomanip>

using namespace std;

class Foos
{
public:
    Foos(void (*f)()= nullptr): f(f){}
    void Foo()
    {
        if (f) f();
    }
private:
    void (*f)() = nullptr;
};

void Foo1()
{
    cout << "Foo1\n";
}

void Foo2()
{
    cout << "Foo2\n";
}

void Foo3()
{
    cout << "Foo3\n";
}

int main()
{
    Foos foo1(Foo1), foo2(Foo2), foo3(Foo3);

    foo1.Foo();
    foo2.Foo();
    foo3.Foo();
}
→ Ссылка