|
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
|
|||||||||||
Как узнать количество аргументов конструктора?13.02.2015, 15:33. Показов 4749. Ответов 46
Метки нет (Все метки)
Добрый день.
Как на этапе компиляции узнать, сколько аргументов имеет конструктор некоторого класса? Нужно в шаблонной функции по переданному классу Type определить количество: 1. Если аргументов 1 шт, то
0
|
|||||||||||
| 13.02.2015, 15:33 | |
|
Ответы с готовыми решениями:
46
Узнать количество пеледаваемых в функцию аргументов
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 14.02.2015, 01:42 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 14.02.2015, 04:53 | |||||||
|
Кликните здесь для просмотра всего текста
Правильно работает только в clang, в gcc - баг с инициализацией, в VS - недоделанные constexpr и brace-initialization. Демо. Максимальное кол-во параметров - 7 (но это можно увеличить). Добавлено через 9 минут А, да. С неконстантными ссылками в параметрах - не работает. Лень разбираться. Все равно это just for fun написано.
7
|
|||||||
|
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
|
|||||||
| 14.02.2015, 10:21 [ТС] | |||||||
|
В общем сейчас у меня функция такая:
Из первых постов не понятно логика проверки. Зачем структуры? Зачем пустые структуры? Зачем функция, которая возвращает всегда true (false)?
0
|
|||||||
|
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
|
|
| 14.02.2015, 11:15 [ТС] | |
|
Не каждому классу требуется объект базы данных.
Поясняю, переменная _db это объект класса QSqlDatabase. ui->tabWidget - это объект класса QTabWidget.
0
|
|
|
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
|
|||||||||||||||||||||
| 14.02.2015, 11:32 [ТС] | |||||||||||||||||||||
|
А что не понятно?
Если конструктор у переданного класса Type имеет два аргумента, то создать объект таким образом:
Вот и нужно определить - данному классу нужно передавать объект базы данных, или это простой класс. Надеюсь понятно объяснил.
0
|
|||||||||||||||||||||
| 14.02.2015, 11:48 | ||
|
Можно ли добавить конструктор с 1 аргументов в 2, но первый аргумент игнорить и вызывать конструктор с 1 аргументом? А так SFINAE может только помочь.
0
|
||
|
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
|
||
| 14.02.2015, 11:51 [ТС] | ||
|
И как тогда sfinae будет выглядеть с учетом дополнений (см. выше посты)?
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 14.02.2015, 12:00 | ||
|
Там всякие constexpr, с которыми студия не дружит не очень то и нужны. Код можно облегчить, тогда на разных компиляторах заработает
0
|
||
|
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
|
|
| 14.02.2015, 12:43 [ТС] | |
|
Так как сделать?
Добавлено через 4 минуты Да, и кстати всякие стат. константы в классе нифига не работают. Типа: static constexpr bool IS_SQL = true; или static constexpr bool IS_SQL = false; Добавлено через 46 секунд Как не разделял конструкторы, так и не разделяет.
0
|
|
|
|
||||||
| 14.02.2015, 13:05 | ||||||
|
[progeR], от себя могу предложить еще такой вариант, через enable_if:
3
|
||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 14.02.2015, 13:48 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 14.02.2015, 13:54 | ||||
|
в частности использование техник sfinae. Добавлено через 4 минуты
0
|
||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 14.02.2015, 14:02 | |||||||
Если же ты о чем-то другом говорил, то хотел бы глянуть на пример.
0
|
|||||||
|
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
|
||||||||||||||||
| 14.02.2015, 14:06 [ТС] | ||||||||||||||||
Сами функции компилируются, но только, если они нигде не используются. Вот что у меня:
0
|
||||||||||||||||
|
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
|
|||||||||||||||||
| 14.02.2015, 15:49 [ТС] | |||||||||||||||||
|
Значит делаю так: в public области в классах пишу это:
0
|
|||||||||||||||||
| 14.02.2015, 15:51 | ||
|
0
|
||
| 14.02.2015, 15:51 | |
|
Неправильная передача аргументов конструктора класса Изменение параметров конструктора без аргументов Как узнать имя конструктора объекта Три конструктора с разным количеством аргументов, какой использовать? Странное расположение в памяти аргументов функции с неизвестным количество аргументов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Задача:
Программно добавить префикс в нумерацию документов в самописной конфигурации на БСП (помощь начинающему коллеге).
Решение:
В модуле объекта документа размещен следующий код:
Процедура. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|