首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从内枚举获取外部类名

如何从内枚举获取外部类名
EN

Stack Overflow用户
提问于 2015-09-11 14:48:19
回答 1查看 265关注 0票数 1

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

代码语言:javascript
复制
#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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-11 15:06:50

您可以为此创建特性并手动提供:

代码语言:javascript
复制
template <typename T>
struct outer_class;

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

然后

代码语言:javascript
复制
template <typename E>
void f(E val)
{
    using T = typename outer_class<E>::type;
    T::f(val);
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32526261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档