gpt4 book ai didi

嵌套枚举上的 C++ 操作

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:28:21 29 4
gpt4 key购买 nike

我有几个类似于下面的嵌套枚举。我想要一个 isValid()函数定义尽可能接近 enum定义。实际代码更加冗长,具有多层嵌套的命名空间和结构。

struct S
{
enum E { V1, V2 };
/* ????? */ bool isValid(E e) { return e==V1 || e==V2; }
};

template <typename Enum>
bool legalValue(Enum e)
{
return isValid(e);
}

是否可以使此代码工作而无需放置 isValid()在全局命名空间中?

请不要评论是否isValid()是很好的做法。这个问题同样适用于想要覆盖 operator<<() 的人。能够有意义地流式传输枚举值。那样的话,有没有办法operator<<()的精髓呢?可以位于 struct S 的主体内?

最佳答案

不,您必须将 isValid 移出 struct。不过,enum 定义可以保留在其中。

struct S
{
enum E { V1, V2 };
};

bool isValid(S::E e) { return e == S::V1 || e == S::V2; }

template <typename Enum>
bool legalValue(Enum e)
{
return isValid(e);
}

关于嵌套枚举上的 C++ 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8714632/

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