gpt4 book ai didi

c++ - 如何自动将处理程序添加到全局 map ?

转载 作者:行者123 更新时间:2023-11-30 02:31:30 25 4
gpt4 key购买 nike

我有一个有方法的应用程序单例

void addHandler(const std::string& command, std::function<std::string (const std::string&)> handler)

我想用这样的处理程序创建很多 cpp 文件

//create_user_handler.cpp
Application::getInstance()->addHandler("create_user", [](std::string name) {
UserPtr user = User::create(name);
return user->toJson();
});

如何从我的 cpp 文件中自动调用它?

我尝试将 void addHandler 更改为 bool addHandler 然后使用

namespace {
bool b = Application::getInatance()->addHandler......
}

但对我没用

更新它现在可以工作了,但是否可以用更好的方式完成它,而无需使用未使用的 bool 变量?

最佳答案

利用静态类实例化。

伪代码——添加注册器类。

class Registrator {
template <typename Func>
Registrator(const std::string& name, Func handler) {
Application::getInstance()->addHandler(name, handler);
}
};

并且在每个cpp文件中,创建一个静态类对象:

test.cpp

static Registrator test_cpp_reg("create_user", [](std::string name) {
UserPtr user = User::create(name);
return user->toJson();
});

关于c++ - 如何自动将处理程序添加到全局 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37615417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com