gpt4 book ai didi

c++ - 如何从内部枚举中获取外部类名

转载 作者:行者123 更新时间:2023-11-30 01:46:52 26 4
gpt4 key购买 nike

基本上我想做的是用代码写的。那么,有没有办法使用模板或其他方法在全局函数中获取外部类名?有没有办法让这段代码工作?

#include <iostream>

class A
{
public:
enum class B
{
val1,
val2
};
typedef B InnerEnum;
static void f(InnerEnum val)
{
std::cout << static_cast<int>(val);
}
};

template <typename T1>
void f(typename T1::InnerEnum val)
{
T1::f(val);
}
int main()
{
A::InnerEnum v = A::InnerEnum::val1;
f(v);
return 0;
}

最佳答案

您可以为此创建特征并手动喂养它:

template <typename T>
struct outer_class;

template <>
struct outer_class<A::B> { using type = A;};

然后

template <typename E>
void f(E val)
{
using T = typename outer_class<E>::type;
T::f(val);
}

关于c++ - 如何从内部枚举中获取外部类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32526261/

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