我正在写一个包含内容的图书馆:
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
,那可靠吗?我知道我可以在BAR
中使用david::Foo
作为前缀,使其显示为david::BAR
,这样可以肯定地回答问题(这是我目前正在做的事情)但是它变得非常冗长,我试图坚持80个字符的限制,这意味着我的代码越来越难以阅读。
答案 0 :(得分:0)
在Foo
BAR
和枚举namespace david
void fooBar () {
std::cout << BAR << std::endl;
}
会将BAR
解析为最适用的范围。因此
typedef enum {
BAR = 1
} CommonEnum;
赢得&#34>&#34;覆盖&#34; namespace david
的定义。