Не может получить доступ к перечислению родительского класса извне - PullRequest
0 голосов
/ 23 сентября 2019

Я хочу получить доступ к перечислению моего класса, которое унаследовано от его базового класса, но выдает ошибку.

Говорит, что я должен использовать Base::One, а не Extended::One.

Но другие люди не знают о базовом классе , они просто знают расширенный класс, который я опубликовал вместе с ними.

Как я могу использовать Extended::One для доступа ко всем перечислениям базового класса?

class Base {
    public:
    enum Type {
        One,
        Two
    };
};

class Extended : Base {

};

int main() {
    Extended::One; // ERROR: constant Base::One is inaccessible

    return 0;
}

Ответы [ 2 ]

4 голосов
/ 23 сентября 2019

Вы случайно используете личное наследование .Чтобы это исправить, определите Extended следующим образом:

class Extended : public Base {

};
1 голос
/ 23 сентября 2019

Тип может быть публичным в Base, но сама Base не является публичным базовым классом Extended, поэтому ваша основная функция не знает об этом.

Почему бы не определить перечисление в глобальной области видимости, если другоеклассы должны использовать это?

...