|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
я тут пару раз уронил компилятор(ms vc++2013), "внутренняя ошибка, поменяйте строки местами...", и у меня возник вопрос. можно как-то (ключи?) посмотреть логи сборки, процесс компиляции, в общем, более развёрнуто увидеть причины ошибок? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 08:45 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMb, http://stackoverflow.com/questions/9016111/to-see-all-command-line-on-output-window-while-compiling http://stackoverflow.com/questions/1211841/how-can-i-make-visual-studios-build-be-very-verbose ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 12:48 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
А кто знает самый просто способ выдернуть тип шаблонного параметра из класса? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2017, 13:32 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMbА кто знает самый просто способ выдернуть тип шаблонного параметра из класса? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Я знаю только об одном способе Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2017, 13:35 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
NekZ, о, спасиб, я до этого пользовался таким: 20126260 Btw, у меня проблема Общий смысл: сделать двух-связанный список классов, по такому принципу: 1. Класс А содержит массив объектов класса В 2. Класс В содержит указатель на объект класса А, в массив которого он входит. Ну и всё на шаблонах, чтобы можно было сложную иерархию классов написать просто: Код: plaintext 1. 2.
шаг первый был прост, передаём класс B в качестве параметра в шаблон А и там заводим на него массив, ок. шаг второй был сложнее, так как при правильной передаче всех шаблонных параметров в обе стороны, описания классов (да просто первая строка декларации) разрастались в геометрической прогрессии. Поэтому оставался один вариант: при создании массива внутри класса, класс сам сообщает его элементам себя в качестве родительского. Это очень компактно и не растягивает декларации классов. Всё ок, но только в случае, если классов два. Дело в том, что в вше приведённом объявлении, класс S передаёт себя в качестве родителя в класс P, но сам он ещё ничего про класс L не знает. И вот, получив родителя с элемента класса P, мы не сможем с него вызвать GetParent. вот что получилось Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2017, 08:12 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6.
Причём, s2 и s - это один и тот же объект в памяти, но s->GetParent() нормально работает. При этом в коде нету виртуальности. Как уболтать компилятор? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2017, 13:55 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
... Кольцо Всевластия несомненно было шаблоном: работало исключительно согласно классу персонажа, которого в него передавали... Сделал двойным проходом: Код: 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.
немного громоздко получилось местами, но, думаю, можно причесать по двум направлениям чувствую себя перешедшим на третий уровень, хотя что такое цифры в понятиях шаблонного мага... PS: если вы не пишите ответы, то закидывайте сюда хотя бы интересные вопросы/код/задачки, касающиеся шаблонной магии ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 12:00 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Натолкнулся на такую проблему, есть два класса: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Тема та же: сделать независимые иерархии классов, связанные между собой только через шаблонные параметры. Эти два ссылаются друг на друга, всё ок. Далее, где-то в main: Код: plaintext 1. 2.
Всё ок. Потом я решаю развивать A1 новым функционалом независимо и создаю A2: Код: plaintext 1. 2. 3.
Далее, где-то в main: Код: plaintext 1. 2.
Ошибка, не могу конвертнуть A1<B1<A2>> в A2<B1<A2>> Потому что функция описана в A1 и делает shared_ptr шаблона, в которой A2 передаётся позже, стало быть Fill об этом никак узнать не может. Переносить Fill каждый раз при создании следующего класса не хочется, да и не так всё просто, как в этом примере. Как быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2017, 09:47 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Проблема решилась тройным проходом Т.е. вот в этой строке: Код: plaintext 1.
Для класса S, когда он в L передаётся, L ещё выглядит вот так: Код: plaintext 1.
Поэтому то, что передаётся в конструктор S после того, как L проинициализировался и до того - это разные классы. Поэтому, перед тем, как создавать сам объект, я делаю фейковую иерархию, а потом её разворачиваю назад, и вот тогда всё ок. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2017, 06:43 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Такой вопрос, есть класс(шаблон), отнаследованный от enable_shared_from_this: Код: plaintext 1. 2.
есть отнаследованный класс B: Код: plaintext 1. 2.
хочется правильно сделать так: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2017, 09:32 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMb, А вопрос-то в чём ? Хочется -- сделай! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2017, 10:19 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
MasterZivХочется -- сделай!В том виде, как я написал, не компилируется. Хочется даже так: чтобы каждый отнаследованный класс T был public enable_shared_from_this<T> неявно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2017, 10:28 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMb, Тут не совсем то, но почитайте ) https://stackoverflow.com/questions/15549722/double-inheritance-of-enable-shared-from-this ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2017, 11:13 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, спасибо Буду делать по старинке, обычный указатель, закрою все доступы и лишние конструкторы, чтобы можно было проинициализировать 1 раз и буду сидеть бояться. По идее, этот указатель (shared_from_this) передаётся дочернему объекту в конструктор, когда его создаёт этот класс. Т.е. не может быть ситуации, когда ребёнок жив, а родитель нет. Просто хотел сделать всё по-современному :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2017, 12:28 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMb, Главное помнить, что shared_from_this() нельзя вызывать из конструктора )) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2017, 13:57 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyГлавное помнить, что shared_from_this() нельзя вызывать из конструктора ))Не задумывался про это, но оно и ожидаемо, как и бросание эксепшинами в вентилятор конструкторе. Посмотрел внутренности. Ага, WeakPtr инициализируется в конструкторе shared_ptr() после того, как выполнился конструктор класса-параметра. До этого он Empty. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2017, 06:08 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Вопрос. Есть нитка классов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
в main: Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1.
C2275 на тип ТЕ. Недопустимое использование типа в качестве выражения. Не пойму, что сделать... Цель: если тип не совпадает, передать управление следующему в нитке классу, до тех пор, пока не найдём тип или не кончатся классы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2017, 13:36 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMb, Так вызывать можно только шаблонный метод: Код: plaintext 1.
А StaticContainer::EntityAdd2 не шаблонный. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2017, 15:05 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, почему не шаблонный? Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 05:14 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMb, Потому что шаблон рекурсивный и в конце рекурсии инстанцируется StaticContainer<TS...> с пустым TS т.е. StaticContainer<> у которого метод нешаблонный. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 10:38 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, так у метода свой, отдельный шаблон на TE ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 11:07 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMb, Этот не шаблонный. Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 11:14 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, спасибо! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 11:24 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Не могу красиво решить проблему Есть шаблонный класс со значением внутри: Код: plaintext 1.
Хочу написать функцию, которая принимает значение для (любого типа) value_ в виде строки. Код: plaintext 1. 2. 3. 4. 5. 6.
всё ок, пока не попадается строка с пробелами. std::noskipws не спасает. С ним просто останавливается обработка строки на пробеле, без него из строки пробелы пропадают. Как быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2018, 10:07 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMb, Сначала надо сформулировать как читать строку - например до ближайшего \n, или до конца потока. Потом надо создать специализацию для строк, и там применить нужный алгоритм чтения строки. Для построчного чтения или до произвольного разделителя - std::getline ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2018, 12:10 |
|
|
start [/forum/topic.php?fid=57&msg=39487170&tid=2017587]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 274ms |
total: | 410ms |
0 / 0 |