|
|
|
Templates
|
|||
|---|---|---|---|
|
#18+
Уважаемые программисты у меня вопрос вот скажем есть структура классов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. С++ ругается ? Могу ли я так оперировать с шаблонами и вектором ? Спасибо. [modИсправленная версия.[/mod] Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2018, 18:02 |
|
||
|
Templates
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2018, 18:03 |
|
||
|
Templates
|
|||
|---|---|---|---|
|
#18+
semen.s.semen Могу ли я так оперировать с шаблонами и вектором ? Спасибо. Нет. Даже если бы это и не было бы шаблоном, запихивание базового класса по значению в вектор вело бы к object slicing'у. Заведи базовый нешаблонный базовый (абстрактный) класс для AbstractCar и храни его указатели в векторе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2018, 18:09 |
|
||
|
Templates
|
|||
|---|---|---|---|
|
#18+
--Заведи базовый нешаблонный базовый (абстрактный) класс для AbstractCar и храни его указатели в векторе. А с шаблонным так нельзя ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2018, 18:11 |
|
||
|
Templates
|
|||
|---|---|---|---|
|
#18+
semen.s.semenА с шаблонным так нельзя ? Нет, потому что, формально, шаблон типом не является. Вектору нужен тип, который в нём будет храниться, как минимум, для вычисления его размера. Шаблонный класс становится типом только при его инстанциации конкретными шаблонными параметрами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2018, 18:15 |
|
||
|
Templates
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Можно использовать std::vector < std::unique_ptr<Car> > или std::vector < std::shared_ptr<Car> > Кроме этого, шаблонный AbstractCar также делает это дело невалидным. Типы class BMW : AbstractCar<Black> class Porshe : AbstractCar<White> несоотносимы друг с другом, у них нет общего предка. Потому что AbstractCar<Black> и AbstractCar<White> -- разные типы данных , никак несоотносимые друг с другом классы. Поэтому от шаблона в базовом классе также нужно избавляться. Но к счастью шаблон тут как раз не нужен ни на фиг, AbstractCar нужно сделать нешаблонным классом, а цвет -- просто его мембером (свойством) и задавать его например в конструкторе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2018, 15:30 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39682174&tid=2017782]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 508ms |

| 0 / 0 |
