如何解决将基类中的受保护枚举类用作派生类中的公共枚举类时遇到问题 [MSVC 2019]
我们遇到了如下情况。
我们试图通过派生类从包含它的类的外部访问 protected
嵌套的 enum class
,方法是在派生类中声明相同的枚举 public
using
关键字。
我们使用的是 MSVC2019 编译器,但无法编译以下代码。它会导致 C2248 错误,指出我们无法访问受保护的枚举。我也尝试过 GCC,然后它似乎编译得很好,就像我预期的那样。
我希望有人可以解释这个问题?
虽然不是在寻找我们已经找到的解决方法。
#include <iostream>
class Base
{
protected:
enum class Field
{
A,B
};
};
class Derived :
public Base
{
public:
using Base::Field;
Derived(Field f);
};
Derived::Derived(Field f) {
switch (f)
{
case Field::A:
std::cout << "A" << std::endl;
break;
case Field::B:
std::cout << "B" << std::endl;
break;
}
}
int main()
{
Derived d(Derived::Field::B);
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。