c++ - 将基类中的受保护枚举类用作派生类中的公共枚举类的问题 [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;
}
解决方案
推荐阅读
- r - 查找三元组概率的 data.table 错误和警告
- r - 数据帧返回到 spatialPolygonsDataFrame
- python - AWS IoT 策略未插入策略变量 (iot:ClientId)
- node.js - 如何在MVC的同一个项目中使用(登录/注册)和(数据库CRUD)的功能?
- python-3.x - google.oauth2.credentials.Credentials 使用有效令牌失败
- reactjs - 我的 bundle.js 很大(1.88MiB),我似乎无法减少它
- css - Mui LinearProgress Bar 停止在 display flex 上显示
- nginx - nginx问题背后的Artifactory 7.x
- r - 与 R 中交替第二分量的相关性
- r - 生成电源点时更改绘图或表格的比例