Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
Есть две структуры: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Надо написать шаблонную функцию, которая может работать одновременно с двумя структурами (в таком варианте ругается, что у структуры А нет поля "b", и у структуры B нет поля "a"): Код: plaintext 1. 2. 3. 4. 5. В реальности у меня порядка 10 структур, и у каждой по 5-6 полей, поэтому анализировать "пересечения" полей совсем не радует. Писать десяток однотипных функций тоже не хочется... Как взлетит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2017, 18:43 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLКак взлетит? Выкинь шаблоны, структуры унаследуй от одной абстрактной с виртуальным методом FillStruct. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2017, 19:15 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВыкинь шаблоны, структуры унаследуй от одной абстрактной с виртуальным методом FillStruct. А смысл? Ведь все затевалось, чтобы написать ОДИН метод обработки данных. А в твоем случае надо писать два оверайд метода... p.s. С наступающим Новым Годом! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2017, 23:12 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLА смысл? Ведь все затевалось, чтобы написать ОДИН метод обработки данных. Тогда не выпендривайся и давай одинаковым полям одинаковые имена. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2017, 23:23 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТогда не выпендривайся и давай одинаковым полям одинаковые имена. Это разные поля :) У меня есть набор текстовых csv- файлов, которые с помощью регулярных выражений считываются построчно, но в одном случае нужны одни поля, а в другом- другие. Например, в одном случае я нахожу общую сумму в разрезе товаров, а в другом- количество клиентов по рынкам... Все эти поля являются "колонками" csv-файла, который я читаю регулярными выряжениями. Очень не хочется для каждого случая писать похожие функции чтения текстовой строки регуляными выражениями и заполнения структуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2018, 00:35 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLОчень не хочется для каждого случая писать похожие функции чтения текстовой строки регуляными выражениями и заполнения структуры. Ну тогда только union Вам поможет ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2018, 08:59 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
ptr128AlekseySQLОчень не хочется для каждого случая писать похожие функции чтения текстовой строки регуляными выражениями и заполнения структуры. Ну тогда только union Вам поможет ) Не понял как разделение разными переменными одной памяти поможет в моей задаче? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2018, 09:40 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, поможет тем, что в одной переменной такого типа сможет содержаться как структура А, так и структура Б. Но не обе одновременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2018, 13:54 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, То что вы хотите реализуется через SFINAE. https://en.wikibooks.org/wiki/More_C _Idioms/Member_Detector Но скорее всего то, что вы хотите, не совпадает с тем, что вам надо )) Например можно так: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2018, 14:42 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, Спасибо, но полей много, поэтому решил в каждой структуре написать свой обработчик заполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2018, 15:08 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. другой вариант, использовать is_same . Во-первых, это отметёт часть кода на этапе компиляции, во-вторых, не надо будет лишних определителей типа, типа Field(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2018, 19:55 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, I. Можно через специализацию шаблона для каждой структуры (наверное, не самое удобное решение); II. Можно через SFINAE -- заводите enum class FieldType для каждого типа поля, заводите соответсвующее поле в каждой структуре, типа static const FieldType fieldType = FieldType::A; , и через std::enable_if_t сужаете область для инстанциаций шаблонов для одного/нескольких значений, типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. То есть в разных структурах можно использовать одно и то же значение поля FieldType. Помните, что к значениям enum class'ов также применимы битовые операции, что можно использовать как битовые флаги в условиях при раскрытии шаблонов. Альтернативно III. Стоит также взглянуть на if constexpr, если у Вас уже есть C++17. В этом случае, как раз можно было бы написать как Вы желаете Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2018, 19:55 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
Спасибо за кучу толковых советов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2018, 21:41 |
|
||
|
Как сделать шаблон, у которого параметр- структура с потенциально разными полями?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLСпасибо за кучу толковых советов! как вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2018, 12:51 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39578588&tid=2018007]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 180ms |

| 0 / 0 |
