编辑代码

#include <iostream>
#include <vector>
#include <functional>

// 一个简单的函数
void greet(const std::string& name, const std::string& greeting) {
    std::cout << greeting << ", " << name << "!" << std::endl;
}


class A {
public:
    void Work() {
        greeters_.push_back(std::bind(&A::greet, std::placeholders::_1, "Hello"));
        greeters_.push_back(std::bind(&A::greet, std::placeholders::_1, "Goodbye"));
    }
    void greet(const std::string& name, const std::string& greeting) {
        std::cout << greeting << ", " << name << "!" << std::endl;
    }
    std::vector<std::function<void(const std::string&)>> greeters_;
};

int main() {
    // 创建一个存储可调用对象的 vector
    std::vector<std::function<void(const std::string&)>> greeters;

    // 使用 std::bind 创建可调用对象,并添加到 vector 中
    greeters.push_back(std::bind(greet, std::placeholders::_1, "Hello"));
    greeters.push_back(std::bind(greet, std::placeholders::_1, "Goodbye"));

    // 调用 vector 中的所有可调用对象
    for (const auto& greeter : greeters) {
        greeter("Alice");
    }

    return 0;
}