В EF6
modelBuilder.Properties()
.Where(x => x.GetCustomAttributes(false).OfType<DecimalPrecisionAttribute>().Any())
.Configure(c => {
var attr = (DecimalPrecisionAttribute)c.ClrPropertyInfo.GetCustomAttributes(typeof (DecimalPrecisionAttribute), true).FirstOrDefault();
c.HasPrecision(attr.Precision, attr.Scale);
});
Это называют сокрытие функция родительского элемента. Можно явно назвать его (Bound::rebound(left, right)
, как @Ates Goral сказал), или можно добавить using Bound::rebound
в Вашем Node
определение класса.
См. http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.9 для большего количества информации
Когда Вы объявляете метод в подклассе с тем же именем, но другая подпись, это на самом деле скрывает версию от родителя.
Вы могли обратиться к нему конкретно как Связанные:: восстановление (...) или использование ключевое слово использования.
См. здесь
Можно сделать три вещи:
, Добавляют using
в Node
объявление:
using Bound::rebound;
void rebound() { rebound(left, right); }
Использование Связанное пространство имен:
void rebound() { Bound::rebound(left, right); }
Делегат реализация к базовому классу (если это сделано в заголовке, не должно быть никакого штрафа благодаря встраиванию):
void rebound(const Bound *a, const Bound *b) { Bound::rebound(a, b); };
void rebound() { rebound(left, right); }
[еще 1113] информация: https://isocpp.org/wiki/faq/strange-inheritance#overload-derived