如何公开库的枚举,以便我的代码不必键入整个命名空间即可使用该枚举?

Max*_*Max 2 c++ enums namespaces spdlog

我正在使用一个名为 spdlog 的库进行日志记录。我想围绕库构建我自己的 Logger,以便我可以选择添加特定于我的应用程序的“额外”功能。

我能够让下面的代码工作:

#include <spdlog/spdlog.h>

int main()
{
  spdlog::log(spdlog::level::level_enum::info, "this is an info message");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,日志级别可通过命名空间为 的枚举获得spdlog::level::level_enum

我可能会使这个问题过于复杂,但是如果我创建自己的 Logger 类,我是否必须期望使用我的记录器的类在它们的日志记录函数调用中键入整个枚举的命名空间?

art*_*rtm 8

但是如果我创建自己的 Logger 类,我将不得不期望使用我的记录器的类在它们的日志函数调用中输入整个枚举的命名空间

这是您可以使用的地方using。就像是:

using info = spdlog::level::level_enum::info;
Run Code Online (Sandbox Code Playgroud)

这将防止每次需要使用它时都输入整个内容。info然后你只需要使用它。