gpt4 book ai didi

c++ - 类似于枚举的 using 声明?

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

基本上这就是我想做的:

struct A {
enum E {
X, Y, Z
};
};

template <class T>
struct B {
using T::E;
};

// basically "import" the A::E enum into B.
std::cout << B<A>::X << std::endl;

原因是我想基本上将实现细节注入(inject)到我的模板类中。同时,“模型”的枚举反射(reflect)了我希望用户能够针对模板的特定实例化获得的信息。这可能吗?

我知道我可以让 B 继承自 A,但我认为这不是一个理想的解决方案,因为我希望能够添加新的“模型”无需更改 B 的内容。

编辑: 既然我已经考虑过了,不一定需要排除继承。也许以下是理想的:

struct A {
enum E {
X, Y, Z
};
};

template <class T>
struct B : A {
};

int main() {
std::cout << B<A>::X << std::endl;
}

最佳答案

这对我有用:

struct A {
enum E {
X, Y, Z
};
};

template <class T>
struct B {
typedef typename T::E E;
};

// basically "import" the A::E enum into B.
int main(void)
{
std::cout << B<A>::E::X << std::endl;
return 0;
}

输出是

0

我确实收到了有关该限定名称中的非标准扩展的警告,因此也许有更优雅的解决方案。

关于c++ - 类似于枚举的 using 声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3983800/

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