1 / 1 / 0
Регистрация: 16.03.2023
Сообщений: 39
|
||||||||||||||||
1 | ||||||||||||||||
Передача вектора объектов в "методы кнопок"18.12.2023, 14:02. Показов 718. Ответов 15
Метки нет (Все метки)
Добрый день!
Среда Qt_creator. Я создал свой класс (предположим простейший, без реализации, пусть называется MyClass). Я создал 3 объекта данного класса и передал в них один параметр. Создал вектор и методом push_back добавил в него эти три объекта.
Где именно я должен создать объекты и сам вектор ? в main.cpp ? каким образом передать его в данный метод (и нужно ли это или тут это реализуется не через передачу)? Предположим что и в других методах кнопок я тоже захочу с ним работать... сам класс я создал в отдельном файле class.h p.s. Предположим , что по нажатию кнопки я просто хочу вывести на консоль параметр одного из объектов :
0
|
18.12.2023, 14:02 | |
Ответы с готовыми решениями:
15
Передача объектов в методы. Передача объектов в функции и методы Передача объектов в методы по указателю Какие основные методы перехода от перестановки из n-1 объектов к перестановкам из n объектов? |
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
18.12.2023, 14:27 | 2 |
0
|
489 / 382 / 74
Регистрация: 29.05.2018
Сообщений: 1,178
|
||||||
18.12.2023, 14:34 | 3 | |||||
1
|
1 / 1 / 0
Регистрация: 16.03.2023
Сообщений: 39
|
|
18.12.2023, 14:50 [ТС] | 4 |
это создание вектора... З это спасибо, да там он не вызывает ошибок, но у меня был еще вопрос про объекты и про добавление их в вектор. Проделать это все внутри класса mainwindow я не смогу, в каком месте это следует сделать?
0
|
1081 / 685 / 184
Регистрация: 30.03.2021
Сообщений: 2,138
|
||||||
18.12.2023, 14:55 | 5 | |||||
class-зарезервировано
параметры в слот можно захватывать, если юзать лямбду в качестве слота
1
|
489 / 382 / 74
Регистрация: 29.05.2018
Сообщений: 1,178
|
||||||
18.12.2023, 15:03 | 6 | |||||
1
|
1 / 1 / 0
Регистрация: 16.03.2023
Сообщений: 39
|
|
18.12.2023, 15:10 [ТС] | 7 |
Все понял, в конструкторе прописываем! спасибо большое) если я там же в конструкторе и сами объекты создам , это же не вызовет проблем? (ну в целом я уже создал и вижу, что все работает, но вдруг я чего то не учел). Добавлено через 2 минуты увы я еще не углубился в слоты и способен воспринять, только ответы формата "для начинающих" , типо как пишет Ender Che. Вам тоже спасибо за участие в решении проблемы.
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
18.12.2023, 15:12 | 8 |
0
|
489 / 382 / 74
Регистрация: 29.05.2018
Сообщений: 1,178
|
|||||||||||
18.12.2023, 15:14 | 9 | ||||||||||
Сообщение было отмечено GribnikAS как решение
Решение
Вот так:
1
|
1 / 1 / 0
Регистрация: 16.03.2023
Сообщений: 39
|
|
18.12.2023, 15:22 [ТС] | 10 |
работает , но есть нюанс , он не дает возможности создать объект с параметрами , ну т.е. MyClass m_myClass(1); (при условии, что есть конструктор с параметрами с такой перегрузкой) выдает ошибку... и получается, что при таком создании параметры объекта будет нужно устанавливать потом отдельно?
А вот если создавать его в конструкторе (там же, где добавляем их в вектор) , то там создается и с параметрами без проблем...
0
|
1081 / 685 / 184
Регистрация: 30.03.2021
Сообщений: 2,138
|
|
18.12.2023, 15:55 | 11 |
может вызвать, обьект будет уничтожен после того, как отработает конструктор
Добавлено через 1 минуту зы не используйте ключевое слово class в названии переменных
2
|
489 / 382 / 74
Регистрация: 29.05.2018
Сообщений: 1,178
|
|||||||||||
18.12.2023, 16:04 | 12 | ||||||||||
Согласен с уважаемым sdf45. Впрочем, если вектор с объектами в определении MainWindow, то можно попробовать так:
2
|
1 / 1 / 0
Регистрация: 16.03.2023
Сообщений: 39
|
|||||||||||
18.12.2023, 16:39 [ТС] | 13 | ||||||||||
я так понимаю, это произойдет в момент закрытия основной формы? ( если это так, то это приемлемо)
В своей программе я использую адекватные названия ( для того, что бы задавать вопросы , я создал отдельно мини програмку, что бы не разбираться в большом полотне и не погружать в него других...)
тут у меня возможно какой-то пробел в знаниях... а как будет при таком формате выставляться название объекта? ну т.е. если я пишу :
я могу к ним обратиться скажем как class[0].getM(); ( ну к примеру...) или mc1.getM(); (кстати я как то не задумывался, если объект лежит в векторе , я могу его использовать только в контексте вектора или же могу и отдельно ? ну т.е. будут ли эти два варианта равнозначны? ) А в вашем случае у объектов получается нету имен? и обратиться к ним можно только через вектор?
0
|
1081 / 685 / 184
Регистрация: 30.03.2021
Сообщений: 2,138
|
||||||
18.12.2023, 17:01 | 14 | |||||
Ну, 11 пост-это больше про лямбды, когда захватывается обьект в ее область видимости.
Это я по инерции выдал, сорян. Когда будете их юзать, разберетесь (захваты по значению, по ссылке...) А так то вот
0
|
489 / 382 / 74
Регистрация: 29.05.2018
Сообщений: 1,178
|
|
18.12.2023, 19:37 | 15 |
Если вы записываете экземпляры объектов в вектор, то какая практическая польза от имён? Вы всегда можете обратиться к ним через вектор. Либо имена, либо вектор. К чему множить сущности?
Если очень хочется, то при использовании объекта извлекли его из вектора и скастовали в имя, чтобы привычнее было. И, кстати, обратите внимание, что у меня в примере не объекты, а указатели на объекты.
1
|
1 / 1 / 0
Регистрация: 16.03.2023
Сообщений: 39
|
|
19.12.2023, 15:59 [ТС] | 16 |
все логично) т.е. по сути запихивать в вектор имеет смысл только, если я и в дальнейшем планирую пользоваться через вектор. Спасибо!
0
|
19.12.2023, 15:59 | |