Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何公开库';s enum,这样我的代码就不会';不必键入整个名称空间才能使用该枚举?_C++_Enums_Namespaces_Spdlog - Fatal编程技术网

C++ 如何公开库';s enum,这样我的代码就不会';不必键入整个名称空间才能使用该枚举?

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

我正在使用一个名为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(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,如果可以的话,请将它隐藏起来。如果您愿意的话,这还允许您将来交换另一个记录器库,而不会破坏使用您的类的代码