C++:当前命名空间是否覆盖其他命名空间

C++: Does current namespace override other namespaces

本文关键字:命名空间 是否 其他 覆盖 C++      更新时间:2023-10-16

我正在编写一个包含内容的库:

namespace david {
  typedef enum {
    BAR
  } CommonEnum;
  class Foo {
    void fooBar () {
      std::cout << BAR << std::endl;
    }
  }
}

假设用户编写文件

typedef enum {
  BAR = 1
} CommonEnum;
#include <david.h>
Foo myFoo();
myFoo.fooBar();

将打印什么?如果将打印0是否可靠?我知道我可以在david::Foo中加上BAR的前缀,这样它就会读david::BAR,这肯定会回答这个问题(这就是我目前正在做的),但它变得非常冗长,我试图坚持80个字符的限制,这意味着我的代码越来越难以阅读。

namespace david 中具有类Foo和枚举BAR

void fooBar () {
    std::cout << BAR << std::endl;
}

将CCD_ 8解析到最内部的适用范围。因此

typedef enum {
    BAR = 1
} CommonEnum;

不会"覆盖"来自namespace david的定义。