|
|
|
перегрузка
|
|||
|---|---|---|---|
|
#18+
У меня есть базовый класс CCell. Есть наследникик CIntegerCell и CTextCell в каждои из них определены private переменные члены CIntegerCell::(int)Value и CTextCell::(std::string)Value Соответственно есть к ним функции доступа void SetVal(int); int GetVal(void); и void SetVal(std::string); std::string GetVal(void); соответственно для каждого класса Так вот у меня нужно в базовом классе иметь виртуальные функции SetVal и GetVal для позднего связывания. Посоветуйте как лучше сделать. _______________________________________________________________ @Мы медленно запрягаем, быстро ездим, и сильно тормозим.@ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 14:08 |
|
||
|
перегрузка
|
|||
|---|---|---|---|
|
#18+
Сам придумал привел во всех функция возвращаемый параметр к void а если нужно что то вернуть то передаю ссылку на переменную в которую нужно возвратить результат. вот теперь заработало весь полиморфизм... _______________________________________________________________ @Мы медленно запрягаем, быстро ездим, и сильно тормозим.@ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 15:25 |
|
||
|
перегрузка
|
|||
|---|---|---|---|
|
#18+
synapseСам придумал привел во всех функция возвращаемый параметр к void а если нужно что то вернуть то передаю ссылку на переменную в которую нужно возвратить результат. вот теперь заработало весь полиморфизм... Это метод C, а в C++ надо использовать параметризированные(шаблонные) функции/классы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 16:05 |
|
||
|
перегрузка
|
|||
|---|---|---|---|
|
#18+
synapseСам придумал привел во всех функция возвращаемый параметр к void а если нужно что то вернуть то передаю ссылку на переменную в которую нужно возвратить результат. вот теперь заработало весь полиморфизм... _______________________________________________________________ @Мы медленно запрягаем, быстро ездим, и сильно тормозим.@ Покажи свой вариант, плз. Если ты изобрел что-то вроде: Код: 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. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. То, посмотри в сторону boost::any (http://www.boost.org/doc/html/any.html) Примерно такой вариант (писался на коленке, от балды, плз не бить ногами :)) Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 16:16 |
|
||
|
перегрузка
|
|||
|---|---|---|---|
|
#18+
synapse Интересно, и зачем весь этот огород городить было нужно? Ну получите вы полиморфный метод который может вернуть что угодно. А использовать его вы как планируете? Судя по всему клиенты этого класса будут по каким-то признакам определять конкретный тип!? imho налицо ошибка в проектировании... вы бы рассказали что это за классы и для чего они используются! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 19:05 |
|
||
|
перегрузка
|
|||
|---|---|---|---|
|
#18+
funikovyuri synapse Интересно, и зачем весь этот огород городить было нужно? Ну получите вы полиморфный метод который может вернуть что угодно. А использовать его вы как планируете? Судя по всему клиенты этого класса будут по каким-то признакам определять конкретный тип!? imho налицо ошибка в проектировании... вы бы рассказали что это за классы и для чего они используются! Просветите пожалуйста что за ошибка такая... Есть тестовое задание сделать электронную таблицу.(не надо мне про изобретение велосипеда говорить) Так вот так и проектирую: есть базовый класс CCell а от него производные CIntegerCell,CTextCell... так ладно щас хедеры покажу... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. берет ввод с клавиатуры и набивает определенные очереди определенными значениями. Потом создается карта с указателями... Код: 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. 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. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 07:46 |
|
||
|
перегрузка
|
|||
|---|---|---|---|
|
#18+
Ну, если я не ошибаюсь то и вправду на лицо явная ошибка проектирования. Суть полиморфима в том что вы собираете общие интерфейне методы в один базовый класс, и делаете несколько разных (ну по ходу как минимум 2 реализации такого вот абстрактного в базовом метода), и потом, работая с ссылками на базовый, вы не заботитесь о том, какой из потомков находится по этой ссылке. Вроде так. Потом, вручную в коде осуществляется проверка условий для конкретного типа: if isInteger ... Так вот, это, судя по всему, чисто учебное задание, и полиморфизм тут немного за уши притянут. А по поводу как заставить это работать - согласен с коллегами, надо делать параметризированные методы доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 10:09 |
|
||
|
перегрузка
|
|||
|---|---|---|---|
|
#18+
немного дополню... вообщето старайтесь ИЗБЕГАТЬ НЕ ТИПИЗИРОВАННОГО использования. Это ПОТЕНЦИАЛЬНАЯ ошибка. Уже это - есть то, что надо подправлять в Вашем коде. Как, т.е. приёмы программирования - тут опыт и ООП Вам поможет. Ышо рекомендую взглянуть на книжку Джэфри Элджера (если ничего не попутал). удачи Вам (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 12:39 |
|
||
|
перегрузка
|
|||
|---|---|---|---|
|
#18+
может так лучше: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Дело в том что клиент этих cell'ов будет уметь отображать что-то, что может быть представленно в виде строки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 13:01 |
|
||
|
перегрузка
|
|||
|---|---|---|---|
|
#18+
забыл наследование... надо вот так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 13:02 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33183124&tid=2032977]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 385ms |

| 0 / 0 |
