gpt4 book ai didi

c++ - 是否可以将枚举注入(inject)类范围/命名空间?

转载 作者:行者123 更新时间:2023-11-30 04:00:03 25 4
gpt4 key购买 nike

有了枚举 Foo::ValuesFoo 之外的类 Bar,我可以将枚举的所有值注入(inject)类范围吗不重新定义类型?

namespace Foo{
enum Values{
zero, one, two
};
}

struct Bar{
typedef Foo::Values Values; //Doesn't work, but is what I'd like to do
using Foo::Values; //Or this
}

所以这些是有效的:

Foo::Values val = Bar::zero;
assert(std::is_same<Foo::Values, Bar::Values>::value);

这可能吗?

最佳答案

这样:

using Values = Foo::Values;

只能一个一个地提取值:

static constexpr Values zero = Foo::zero;
static constexpr Values one = Foo::one;
static constexpr Values two = Foo::two;

检查:

#include <iostream>
#include <type_traits>

namespace Foo {
enum Values { zero, one, two };
}

struct Bar {
using Values = Foo::Values;
static constexpr Values zero = Foo::zero;
static constexpr Values one = Foo::one;
static constexpr Values two = Foo::two;
};

int main() {
Foo::Values val = Bar::zero;
std::cout << std::is_same<Foo::Values, Bar::Values>::value;
}

输出:

1

关于c++ - 是否可以将枚举注入(inject)类范围/命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26530901/

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