Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как правильно унаследовать?
|
|||
|---|---|---|---|
|
#18+
Привет. Есть у меня класс: Код: plaintext 1. 2. 3. 4. 5. 6. Это типа предок. В нем все основные алгоритмы. Классическая задача - унаследовать от него класс, который будет работать с конкретными объектами. Т.е. я преследую цель проверки типа объекта при использовании потомка. Переопределяю все методы с Pointer: Код: plaintext 1. 2. 3. 4. 5. Собственно вопрос. Что надо писать в реализации методов? Хотелось бы максимально облегчить себе работу. Типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. А что то нифига не выходит для TDesc.Function1(param: Integer): TObject; Пишет Incompatible types. Приходится делать так, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. но так лениво. Да вдобавок у TDesc я вижу 3 варианта Function1, в том числе и с Pointer от предка, который я хотел спрятать. И такая фигня проходит: Код: plaintext Типа Pointer(1) - это TObject Я что-то неправильно делаю или как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 11:18 |
|
||
|
Как правильно унаследовать?
|
|||
|---|---|---|---|
|
#18+
Первое что пришло на ум, сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. А вообще, если по-правильному, то все функции предка нужно сделать private, и публиковать из через property в потомках. Либо сделать их виртуальными и protected, а в потомке повысить уровень доступа и переопределять конкретные функции с учетом специфики. Что, правда, практически то же самое, что и первое :) Посмотри про overload и наследование, Incompatible types из-за того, что при наследовании ты меняешь тип возвращаемого значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 11:46 |
|
||
|
Как правильно унаследовать?
|
|||
|---|---|---|---|
|
#18+
В принципе согласен по поводу private в предке. Про Incompatible types понял, спасибо. Жаль, что, видимо, не удастся обойтись без ручного дописывания потомков и прямого вызова методов предка. Тогда это становится больше похоже на делегирование, а не на наследование. Я надеялся, что компилятор мне сам все это дело организует. Ну да ладно, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 12:04 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2116956]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 357ms |

| 0 / 0 |
