私のプロジェクトでは、以前はベースクラスで保護されていると宣言されていた列挙型の可視性を広げたいと思います。
class A {
protected:
enum E { e = 0 };
};
class B : public A {
public:
using A::E;
};
int main()
{
B::E enum1; // okay
enum1 = B::e; // fails: test.cpp:3:14: error: A::E A::e is protected
}
この理由は単純です。
E
私は基本クラスを管理していないので、公開することはできませんB
との新しい列挙型の間を変換するための巨大なswitch-caseステートメントは必要ありませんA::E
私はコードがうまくコンパイルされることを期待しています。
私は興味がある。コードがコンパイルに失敗する理由の科学的な説明は何ですか?