Closed apolukhin closed 3 years ago
Олег Ляттэ, 15 апреля 2018, 14:46 Но ведь можно уже сейчас в начале объявления класса D написать using base = B2. Поскольку это рядом с описанием базового класса (или классов), то есть довольно высокий шанс исправить этот using, если вдруг поменяется базовый тип.
На мой взгляд было бы больше смысла стандартизировать что-то вроде майкрософтовского __super.
__super::show() тут вызовет show() у базового класса даже в случае, если базовых классов несколько. Если неоднозначность - ошибка.
Идея #421 дублирует эту, но прорботана лучше
Перенос предложения: голоса +1, -9 Автор идеи: Андрей Уланов
В языках Java и C# есть ключевое слово "base" для доступа к членам базового класса. В C++ этому мешает множественное наследование. Тем не менее задача актуальна, так как: 1) позволяет сделать код лаконичнее 2) избавляет от следующих ошибок:
пусть D изначально наследовался от B
затем в процессе разработки был добавлен следующий класс
и класс D стал наследоваться от B2
но при этом в методе D::show() разработчик может забыть заменить B::show() на B2::show(), чего не было бы, если бы можно было бы написать base::show();
Предлагаю дополнить возможность использования ключевого слова base в случае, если класс имеет только одного предка. в случае множественного наследования - выдавать ошибку о невозможности использовать base