gpt4 book ai didi

c++ - 引用封闭命名空间

转载 作者:行者123 更新时间:2023-11-30 03:56:34 26 4
gpt4 key购买 nike

这不会编译。

namespace n1
{
enum e1_tag
{
FOO1 = 0,
} e1;

namespace n2
{
enum e2_tag
{
BAR1 = 3 + n1::e1::FOO1 // Why doesn't this compile?
} e2;
}
}

g++ 提示 n1::e1 不是类或命名空间。消除 n1 会产生与消除 e1 相同的错误。

我错过了什么?

最佳答案

e1 不是类或命名空间。它是一个类型为 e1_tag 的变量。

枚举数在周围的命名空间范围内,因此您需要 n1::FOO1。请注意,枚举器包含字母 O,而不是数字 0

自 C++11 起,您可以使用作用域枚举

enum class e1 {
FOO1 = 0,
};

创建一个包含其枚举器的范围。现在 n1::e1::FOO1 是正确的限定名。

关于c++ - 引用封闭命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28436988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com