std :: function是否可以包含多个方法?

时间:2020-09-19 01:29:01

标签: c++

#include <iostream>
#include <functional>

class Foo {
    private:
        std::function<?> func;

    public:
        void call_func (?) {
            this->func(?);
        }

        void set_func (std::function<?> func) {
            this->func = func;
        }
};

class Bar {
    public:
        Bar () {
            Foo foo;
            foo.set_func(std::bind(&Bar::func, this, std::placeholders::_1));
            foo.call_func(1);

            foo.set_func(std::bind(&Bar::func2, this, std::placeholders::_1, std::placeholders::_2));
            foo.call_func(1, 2);
        }

        void func (int number) {
            std::cout << number;
        }

        void func2 (int number, int number2) {
            std::cout << number << '\n';
            std::cout << number2;
        }
};

int main () {
    Bar bar;
    return 0;
}

我希望std :: function的一个实例包含多个具有不同参数类型的方法。

但是我不知道是否可行以及如何调用该函数。

您对这个问题有什么看法?感谢您的阅读。

通常,我使用以下方法。是的,本质上是完全不同的。我只想知道是否还有另一种方法。

foo.set_func([this]() {
    this->func(1);
});
foo.call_func();

foo.set_func([this]() {
    this->func2(1, 2);
});
foo.call_func();

0 个答案:

没有答案