|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
Всем привет у меня есть такая задача нужно сделать фабрику морзе, есть данный мейн и надо чтобы он заработал но столкнулся с проблемой что у меня невозможно создать экземпляр абстрактного класса, я все проверил и не понимаю почему класс абстрактный. Переопределил функции в дочернем классе, сижу над этим уже 2 дня, снизу код с++ Main Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Класс morseFactory Код: 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.
Клас morseFactory cpp Код: 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.
Клас morse Код: 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.
Клас morse cpp Код: 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. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 22:24 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
NiKiTa228, Комментарии на польском тоже сам писал? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 22:31 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
Siemargl, да, я учусь в польше, забыл их иззменить голова кипит с этим классом ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 22:33 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
NiKiTa228, У вас базовый абстрактный класс "morseFactory". В классе наследнике "morse" вы, я надеюсь, переопределили чистые виртуальные функции. Но вы пытаетесь создать экземпляр базового абстрактного класса: Код: plaintext 1.
Вам нужно написать так: Код: plaintext 1.
Если что, извините, особо не вчитывался. 30-ть секунд. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 22:53 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
NiKiTa228я все проверил и не понимаю почему класс абстрактный. Переопределил функции в дочернем классе, сижу над этим уже 2 дня, снизу код с++ Не хочу тебя огорчать, но компилятор явно перечисляет методы, из-за которых он считает класс абстрактным, в тексте ошибки. Ты за два дня так и не догадался прочитать его вывод дальше первой строки?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 22:54 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
NiKiTa228, И я не уверен что это откомпилируется: Код: plaintext 1.
Если метод виртуальный то в классе наследнике я советую писать и virtual, и override одновременно. Так нагляднее. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 22:59 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, я читал из-за чего но я думал что смогу сделать на morseFactory а оно не пашет ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 23:06 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
petrav, в main могу использовать только класс morseFactory ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 23:10 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
NiKiTa228 petrav, в main могу использовать только класс morseFactory Почему же? Значит вы недопоняли идею абстрактных классов/интерфейсов. Кстати, название "morseFactory" неудачное. Потому что фабрика — это другой паттерн. Класс "morseFactory" нужно переименовать или в "MorseBase", или в "IMorse". И стиль кодирования "morseFactory" применим только к переменным. В названиях классов так не делают. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 23:15 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
petrav, ну это учитель дал задание на зачёт и не я придумывал названия ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 23:24 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
NiKiTa228 petrav, ну это учитель дал задание на зачёт и не я придумывал названия Ну так себе преподаватель, хотя это понятно, от практики он далёк. Короче, основная идея абстрактных интерфейсов состоит в чём? В том что мы описываем абстрактный класс. И через указатель (или ссылку) на базовый абстрактный класс единообразным способом оперируем различными реализациями данной абстрактной идеи (интерфейса, класса). Но создавать мы должны конкретную реализацию этой абстрактной идеи. Понимаете? Есть идея и есть множество реализаций этой идеи. Поэтому только так: Код: plaintext 1.
И да деструктор базового класса, в данном случае, тоже должен быть виртуальным: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 23:32 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
И удаление объекта: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 23:35 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
petrav, даже если так то у меня выходит что morse получиться абстрактным ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 23:42 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
petrav, а еще лучше сделать это как фабрику ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 23:46 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
NiKiTa228 petrav, даже если так то у меня выходит что morse получиться абстрактным Нет. morseFactory — абстрактная идея. А morse реализация этой идеи. Вы можете создать morse2 (африканский стандарт:). И оперировать классами morse и morse2 через указатель на morseFactory не зная какая на самом деле реализация идеи скрывается за указателем на morseFactory. Короче, методические материалы нужно перечитать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 23:47 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
Код: plaintext 1.
Абстрактный метод. С ним нельзя создать класс, только дочерний, где он реализован ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 00:22 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
petrav,а если создать класс creator то какому классу он будет дочерний и среализовать morseFactory *f = new creator; ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 00:52 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
NiKiTa228 petrav,а если создать класс creator то какому классу он будет дочерний и среализовать morseFactory *f = new creator; MorseCreator или MorseFactory. Это будет совершенно отдельный (третий) класс, не дочерний ни к чему. Его метод MorseFactory::create() будет возвращать указатель "MorseBase *" (то что сейчас называется morseFactory), а внутри будет написано "return new Morse()". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 01:01 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
petrav, понимаю, но как его реализовать а то у меня он не понимает что я хочу XD ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 01:13 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
petravЕсли метод виртуальный то в классе наследнике я советую писать и virtual, и override одновременно. Так нагляднее. Второе уже подразумевает первое. Вредный совет. NiKiTa228я читал из-за чего но я думал что смогу сделать на morseFactory а оно не пашет Ась? Ты думал, что сможешь обойти правила языка и заставить работать компилятор так, как хочется тебе, а не его создателям? С таким самомнением надо сквозь стены проходить: "вижу цель, не вижу препятствий". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 01:33 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
Зачем проверять большую и маленькую букву? Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Можно сразу вызвать tolower() и сократить число проверок в два раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 02:18 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravЕсли метод виртуальный то в классе наследнике я советую писать и virtual, и override одновременно. Так нагляднее. Второе уже подразумевает первое. Вредный совет. Совет сугубо эстетический. Вкусовщина, я считаю, что так нагляднее. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 12:00 |
|
Невозможно создать экземпляр абстрактного класса
|
|||
---|---|---|---|
#18+
NiKiTa228 petrav, понимаю, но как его реализовать а то у меня он не понимает что я хочу XD Сначала разберитесь с чистыми виртуальными функциями. И переименуйте базовый класс. Фабрика это третий и последний компонент. С ним потом разберёмся. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 12:02 |
|
|
start [/forum/topic.php?fid=57&msg=40038492&tid=2017267]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 288ms |
0 / 0 |