Ошибки, баги, вопросы - страница 1696
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Во-первых, не понятно, была ли попытка объявить метод виртуальным или нет. Если он должен быть виртуальным, то пишите virtual в базовом классе, а не в производном (потому что иначе базовые указатели будут ризолвится на базовый метод даже если положить в него экземпляр производного класса).
Если не хотите переопределять метод в производном классе, то не надо его вообще упоминать, а если упомянули, значит должно быть переопределение с телом.
Наконец, чтобы скрыть метод от класса-наследника нужно ввести промежуточных класс, где этот метод переместить в область priivate или сразу сделать приватным в базовом (но зачем он тогда виртуальный?).
Вот пример
Вот пример
Этот пример примерно такой же как и первый ;-). Мое письмо отквотили, но не читали? Чего Вы хотите добиться продекларировав методы по-новой в наследнике, но не определив их? Чтобы вызывать базовую реализацию не имея новой, не надо их упоминать в наследнике.
Есть 200 методов в родителе, на основе 10 методов из родительского класса создается класс потомок при дальнейшей работе я хочу видеть только 10 наследованных методов плюс те которые созданы в классе потомке, мне не нужны еще 190 методов которые никаким боком к текущему потомку не должны относиться.
Например есть базовый класс в котором описаны свойства фигур, ширина высота, углы, радиусы, цвета, площадь описаны все максимальные свойства.
На основе этих методов свойсв я делаю класс наследник круг в котором использую методы из родительского класса, радиус, цвет, площадь... Но мне тут углы и ширина не нужны ...
На основе этих методов свойсв я делаю класс наследник треугольник в котором использую методы из родительского класса, цвет, площадь, углы ... Но мне тут радиус не нужен ...
На вопрос почему именно так, родительский класс обладает группой методов которая общая для всех или общая для группы фигур например метод цвет, стиль.
Есть 200 методов в родителе, на основе 10 методов из родительского класса создается класс потомок при дальнейшей работе я хочу видеть только 10 наследованных методов плюс те которые созданы в классе потомке, мне не нужны еще 190 методов которые никаким боком к текущему потомку не должны относиться.
Например есть базовый класс в котором описаны свойства фигур, ширина высота, углы, радиусы, цвета, площадь описаны все максимальные свойства.
На основе этих методов свойсв я делаю класс наследник круг в котором использую методы из родительского класса, радиус, цвет, площадь... Но мне тут углы и ширина не нужны ...
На основе этих методов свойсв я делаю класс наследник треугольник в котором использую методы из родительского класса, цвет, площадь, углы ... Но мне тут радиус не нужен ...
На вопрос почему именно так, родительский класс обладает группой методов которая общая для всех или общая для группы фигур например метод цвет, стиль.
Не понял: этот вопрос - вопрос или недописанный ответ? Обычно делают так - в базовом классе общее, а потом в потомках добавляют частности. Зачем делать наоборот? Какая цель?
Но даже если не углубляться, то я уже предложил вариант - вставить промежуточный наследник, в котором все ненужные свойства и методы передвинуть в private часть.
Есть 200 методов в родителе, на основе 10 методов из родительского класса создается класс потомок при дальнейшей работе я хочу видеть только 10 наследованных методов плюс те которые созданы в классе потомке, мне не нужны еще 190 методов которые никаким боком к текущему потомку не должны относиться.
Для этого нужно объявить наследование protected или private. И затем переопределить нужные вам методы.
Для этого нужно объявить наследование protected или private. И затем переопределить нужные вам методы.
Не понял: этот вопрос - вопрос или недописанный ответ? Обычно делают так - в базовом классе общее, а потом в потомках добавляют частности. Зачем делать наоборот? Какая цель?
Но даже если не углубляться, то я уже предложил вариант - вставить промежуточный наследник, в котором все ненужные свойства и методы передвинуть в private часть.
Благодарю Вас.
Алексей, Ваш пример не работает, все равно в наследнике вываливаются методы родителя которые не должны вываливаться.
А если изменять короткое имя при создании?
И каждый раз изменять?
Если индикатор содержит индикаторные буферы, то самоидентифицировать себя не сложно, а вот без буферов - не вижу пока решения.
Как узнать свой INDICATOR_SHORTNAME? IndicatorGet*-функций нет!