|
|
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Пытаюсь написать нинзя код, что бы функция возвращала классовую константа дочернего класса, но ни так ни эдак не получается: Код: pascal 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. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. цель, что бы по кнопки Button1Click и Button2Click записывали в заголовок формы книгу и собаку соответственно, и при этом не хоца плодить виртуальные методы в каждом дочернем классе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 19:37:20 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Arshehremen, Я когда-то пытался так делать, не работает. В каком классе метод - из того класса и константа будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 19:46:19 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
используй классовую переменную, а константу в нее грузи из классового конструктора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 20:24:32 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Константы не являются виртуальными. В дочерних классах появляется свой экземпляр SValue, про который базовый класс и его виртуальный метод не знают ничего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 21:18:20 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Вроде бы начиная с 2010 версии появились атрибуты. Можно через них сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 06:33:47 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Pu4koff, доступ к аттрибутам не так, чтобы быстрый. Далеко не всё в них можно перевести. ....жаль, что классовые конструкторы не виртуальны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 11:37:13 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Arshehremen, так пойдёт:? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Arioch....жаль, что классовые конструкторы не виртуальны...Это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 12:10:59 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
сделай ридонли свойство вместо константы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 14:02:17 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий> сделай ридонли свойство вместо константы. А толку-то? Заполнять-то его всё равно где-то надо, в конструкторе, методе или ещё где. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 14:39:29 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Arioch....жаль, что классовые конструкторы не виртуальны... зато из конструктора запросто вызывается виртуальный метод. Проблема-то в чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 14:48:32 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Суть в том, что бы возвращать несколько параметров класса (около 10) без выделения памяти на экземпляр класса. В одном(это принципиально) месте в коде добавляется ссылка на класс и больше в модуле он нигде не должен фигурировать, даже, Bred eFeM , в виде строки. Код: pascal 1. 2. 3. 4. 5. До этого список параметров для каждого класса был в TTypesList(модифицированный TList) и они заполнялись из общего модуля. Но в итоге оказалось не очень удачным решением. Так как с классовыми константами фича не удалась, решил использовать классовые функции в каждом экземпляре. Не радует только то, что в каждый дочерний класс надо тянуть статичный кусок кода с этими функциями. Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2017, 00:12:12 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2017, 10:16:43 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Arshehremen возвращать несколько параметров класса (около 10) без выделения памяти на экземпляр класса. В одном(это принципиально) месте в коде Код: pascal 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. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2017, 17:22:51 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Vizit0rArioch....жаль, что классовые конструкторы не виртуальны... зато из конструктора запросто вызывается виртуальный метод. Проблема-то в чем? Bred eFeMArioch....жаль, что классовые конструкторы не виртуальны...Это как? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Пока все хорошо, казалось бы... Начинаем в разных модулях делать разные реализации. Код: pascal 1. 2. 3. Казалось бы, как и с обычными конструкторами, классовые конструкторы должны наследоваться. Т.е. если я где-то в коде упомянул TImplAAA - то автоматически должен вызываться TImplAAA.CreateList Но "Волобуев, вот ваш меч". Для TImpl??? придется заводить классовые конструкторы-пустышки с единственной задачей - вызвать Inherited CreateList; Plumbing, plumbing, plumbing.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 12:22:13 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Arshehremenнадо тянуть статичный кусок кода с этими функциями. Функций много? Сделай классовую переменную (в каждом классе) "указатель на данные". С общим lazy-инициализатором. Если переменная nil, то создаем такие данные и заполняем их из, например, аттрибутов класса. Один раз - не тормозит. Потребуются две виртуальных классовых функции - прочитать переменную и записать переменную. Поскольку переменные будут разные, насколько я понимаю, объявлять их придется врозь. И эти две функции придется копипастить, да. Но только их. Код: pascal 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. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. Копи-паст и boilerplate сведётся к Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 12:43:35 |
|
||
|
классовые константы дочернего объекта
|
|||
|---|---|---|---|
|
#18+
Arioch Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Кстати, в Base они скорее всего не нужны, можно сделать virtual abstract ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 14:04:28 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39503730&tid=2041941]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
284ms |
get topic data: |
10ms |
get forum data: |
6ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 581ms |

| 0 / 0 |
