Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Создание локального временного объекта в конструкторе
|
|||
|---|---|---|---|
|
#18+
Приветствую всех! Столкнулся с интересной ситуацией, при попытке создать в конструкторе локальный временный объект, компилятор выводит ошибку error C2082: redefinition of formal parameter 'num' Код: 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. Visual Studio 2013 Может кто-нибудь пояснит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 00:43 |
|
||
|
Создание локального временного объекта в конструкторе
|
|||
|---|---|---|---|
|
#18+
igas Код: plaintext 1. это не создание локального временного объекта, компилятор пытается это интерпретировать как вызов функции Base( int ); а почему такая странная диагностика, то этот вопрос - к разработчикам студии создание локального временного объекта пишется так: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 00:58 |
|
||
|
Создание локального временного объекта в конструкторе
|
|||
|---|---|---|---|
|
#18+
egorych, так эти почему работают? Base((int)num); Base(10); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 01:18 |
|
||
|
Создание локального временного объекта в конструкторе
|
|||
|---|---|---|---|
|
#18+
Это следствие того, что Код: plaintext 1. это то же самое что Код: plaintext 1. а Код: plaintext 1. не является объявлением переменной, т.к. следующая конструкция невозможна Код: plaintext 1. ЗЫ. А вообще скобки в объявлениях разрешены из-за указателей на функции и массивы, которые иначе бы нельзя было объявить. А в итоге с таким же успехом скобки можно применить и не только для указателей, т.к. парсер все равно их разбирает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 01:52 |
|
||
|
Создание локального временного объекта в конструкторе
|
|||
|---|---|---|---|
|
#18+
Самое главное забыл. Ваш код Код: plaintext 1. - не работает так как вы думаете. Вы думаете что этим вы инициализируете предка из конструктора наследника. А на самом деле вы просто создаете локальную анонимную переменную типа Base и она тут же уничтожается. А предок остается инициализированным своим конструктором по умолчанию. Правильно делать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 01:57 |
|
||
|
Создание локального временного объекта в конструкторе
|
|||
|---|---|---|---|
|
#18+
Хотя счас перечитал название темы и понял, что вы таки хотели локальную анонимную переменную Зачем?!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 02:51 |
|
||
|
Создание локального временного объекта в конструкторе
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyСамое главное забыл. Ваш код Код: plaintext 1. - не работает так как вы думаете. Вы думаете что этим вы инициализируете предка из конструктора наследника. А на самом деле вы просто создаете локальную анонимную переменную типа Base и она тут же уничтожается. А предок остается инициализированным своим конструктором по умолчанию. Правильно делать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Я знаю как это работает;) А вот это не совсем понятно Anatoly MoskovskyЭто следствие того, что Код: plaintext 1. это то же самое что Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 11:29 |
|
||
|
Создание локального временного объекта в конструкторе
|
|||
|---|---|---|---|
|
#18+
egorychigas Код: plaintext 1. это не создание локального временного объекта, компилятор пытается это интерпретировать как вызов функции Base( int ); а почему такая странная диагностика, то этот вопрос - к разработчикам студии создание локального временного объекта пишется так: Код: plaintext 1. Это локальный автоматический объект, а не временный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 12:16 |
|
||
|
Создание локального временного объекта в конструкторе
|
|||
|---|---|---|---|
|
#18+
igasА вот это не совсем понятно Anatoly MoskovskyЭто следствие того, что Код: plaintext 1. это то же самое что Код: plaintext 1. А так понятней? Код: plaintext 1. это то же самое что Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 13:58 |
|
||
|
Создание локального временного объекта в конструкторе
|
|||
|---|---|---|---|
|
#18+
igasЯ знаю как это работает;) А вот это не совсем понятно Anatoly MoskovskyЭто следствие того, что Код: plaintext 1. это то же самое что Код: plaintext 1. Most vexing parse ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2014, 22:47 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=64&tid=2019651]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 10ms |
| total: | 129ms |

| 0 / 0 |
