基本上我想做的是用代码编写的。那么,是否可以使用模板或其他方法在全局函数中获取外部类名称?有没有办法让此代码正常工作?
#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/