C++ 如何公开库';s enum,这样我的代码就不会';不必键入整个名称空间才能使用该枚举?
我正在使用一个名为spdlog的库进行日志记录。我想围绕库构建我自己的记录器,这样我就可以选择添加特定于我的应用程序的“额外”功能 我能够使下面的代码正常工作:C++ 如何公开库';s enum,这样我的代码就不会';不必键入整个名称空间才能使用该枚举?,c++,enums,namespaces,spdlog,C++,Enums,Namespaces,Spdlog,我正在使用一个名为spdlog的库进行日志记录。我想围绕库构建我自己的记录器,这样我就可以选择添加特定于我的应用程序的“额外”功能 我能够使下面的代码正常工作: #include <spdlog/spdlog.h> int main() { spdlog::log(spdlog::level::level_enum::info, "this is an info message"); return 0; } #包括 int main() { spdlog::log(spd
#include <spdlog/spdlog.h>
int main()
{
spdlog::log(spdlog::level::level_enum::info, "this is an info message");
return 0;
}
#包括
int main()
{
spdlog::log(spdlog::level::level_enum::info,“这是一条信息消息”);
返回0;
}
如您所见,日志记录级别可通过名为spdlog::level::level_enum
的枚举获得
我可能过于复杂化了,但是如果我创建了自己的Logger类,我是否必须期望使用我的Logger的类在其日志函数调用中键入整个枚举的名称空间
但是,如果我创建自己的Logger类,我将不得不期望使用我的Logger的类在其日志函数调用中键入整个枚举的名称空间
在这里,您可以使用和。比如:
using info = spdlog::level::level_enum::info;
这将防止每次需要使用时都键入整个内容。您只需使用info
即可
如果我创建自己的Logger类,我是否必须期望使用我的Logger的类在其日志函数调用中键入整个枚举的命名空间
我建议您的类定义自己的info
值,然后在需要时在内部将其映射到spdlog的info
值。spdlog是类内部的一个实现细节,所以不要在类之外公开spdlog,如果可以的话,请将它隐藏起来。如果您愿意的话,这还允许您将来交换另一个记录器库,而不会破坏使用您的类的代码