基本上,我想要做的是用代码编写的。那么,在全局函数中是否有一种使用模板或其他方法获取外部类名的方法?有办法让这段代码正常工作吗?
#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;
}发布于 2015-09-11 15:06:50
您可以为此创建特性并手动提供:
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);
}https://stackoverflow.com/questions/32526261
复制相似问题