|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
|||||||||||||||||||||
Переменное количество параметров для типовой формы редактирования29.04.2019, 22:57. Показов 3625. Ответов 23
Добрый день!
Хочется сделать следующее. Есть несколько типовых форм редактирования сущностей. Конструкторы классов этих форм принимают в качестве параметра объект - саму сущность.
Понимаю, что можно сделать так:
0
|
|||||||||||||||||||||
| 29.04.2019, 22:57 | |
|
Ответы с готовыми решениями:
23
Составить функцию, принимающую переменное количество параметров
Создайте функцию, которая принимает переменное количество входных аргументов и возвращает переменное количество |
|
Модератор
|
|
| 29.04.2019, 23:06 | |
|
wrq2017, не знаю точно - Студию запускать лень.
Но на мой взгляд вот эти два конструктора public SomeEditForm2(SomeType2 obj) и public SomeEditForm2(SomeType2 obj2, SomeType3 obj3 = null) будут конфликтовать. Уберите значение по умолчанию во втором.
2
|
|
|
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
|
|||
| 30.04.2019, 01:25 | |||
|
только я вижу под одним названием 2 разных по и сути и по сигнатуре класса?
1
|
|||
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
||||||||
| 30.04.2019, 08:40 [ТС] | ||||||||
|
Добавлено через 15 минут Второй класс - один из вариантов решения моей проблемы, который мне не нравится, потому что в данном случае конкретный параметр зависит от его места в массиве входных параметров, что плохо. Я бы предпочел вариант:
0
|
||||||||
|
Модератор
|
|||
| 30.04.2019, 09:19 | |||
|
Конструктор с одним обязательным параметрам типа SomeType2 и несколькими необязательными параметрами иных разных типов - объявлен у Вас корректно. А что за ошибка у Вас возникает - не понятно. Может Вы хотите передать параметры не через запятую, а в одном массиве object [1] {someObj}?Ну так объявите конструктор с массивом. Что этому мешает? Только надо реализовывать через статический метод, так как если в массиве будет отсутствовать обязательный параметр или конфликт типов параметров, то объект создаваться не должен.
1
|
|||
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
|||||||
| 30.04.2019, 09:33 [ТС] | |||||||
![]() ![]() Очень может быть ![]() В данном случае - класс - это класс формы редактирования, она создается в любом случае. Правильно ли я понимаю, что в таком случае статический метод не нужен. То есть в настоящий момент делаю так:
0
|
|||||||
|
Модератор
|
||||||||||||||
| 30.04.2019, 09:56 | ||||||||||||||
|
Если напрямую обращаться к конструктору с передачей некорректных параметров, то избежать создания ненужного объекта не получится. Конструктор всегда создаёт объект. В Ваших примерах Вы показывали конструкторы с передачей параметров каждого разного типа. Из них один обязательный. Если я правильно понял, можно сделать так
1
|
||||||||||||||
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
|||||||||||||||||||||||||||
| 30.04.2019, 10:50 [ТС] | |||||||||||||||||||||||||||
|
Задам свой вопрос по другому. Почему если класс имеет конструктор:
и создавать объект таким же образом
Добавлено через 1 минуту P.S. Сигнатура метода вызова общая, ее менять не могу:
0
|
|||||||||||||||||||||||||||
|
880 / 559 / 291
Регистрация: 21.11.2012
Сообщений: 1,554
|
|
| 30.04.2019, 11:10 | |
|
какой смысл создавать массив, зная что в нем только один объект?
1
|
|
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
|||
| 30.04.2019, 11:18 [ТС] | |||
|
Добавлено через 1 минуту
0
|
|||
|
880 / 559 / 291
Регистрация: 21.11.2012
Сообщений: 1,554
|
||||||
| 30.04.2019, 11:22 | ||||||
|
wrq2017,
ну дык и создайте конструктор, который принимает массив, т.о. отпадут дальнейшие вопросы)
1
|
||||||
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
||
| 30.04.2019, 11:27 [ТС] | ||
|
Добавлено через 2 минуты А я хотел бы, чтобы параметры, которые не были переданы в массиве объектов, получили значение по умолчанию - null
0
|
||
|
Модератор
|
|||||||
| 30.04.2019, 11:39 | |||||||
Сообщение было отмечено wrq2017 как решение
РешениеВот ещё - более простой вариант
1
|
|||||||
|
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
|
|||||||||||||||||
| 30.04.2019, 11:55 | |||||||||||||||||
|
params object[] args
1
|
|||||||||||||||||
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
||
| 30.04.2019, 13:53 [ТС] | ||
|
За автора не надо подозревать, автор сам может рассказать. Есть некоторое количество разных сущностей. Каждая сущность редактируется в своей уникальной форме. Но метод вызова этих форм универсиализирован.
Всё работало хорошо ![]() Но в некоторый момент в некоторой форме возникла необходимость передачи не только самого объекта, но и дополнительных параметров. В связи с чем и возник вопрос. Добавлено через 2 минуты
0
|
||
|
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
|
|
| 30.04.2019, 14:25 | |
|
1
|
|
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
|
| 30.04.2019, 14:27 [ТС] | |
|
0
|
|
| 30.04.2019, 14:27 | |
|
Помогаю со студенческими работами здесь
20
Переменное число параметров Переменное число параметров шаблона QStringList в переменное число параметров Как задать переменное количество аргументов для чужой функции? Как передать в функцию переменное число параметров Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|