|
0 / 0 / 1
Регистрация: 14.04.2015
Сообщений: 72
|
|||||||||||||||||||||
Необъявленный идентификатор типа формы, а так же задача по обмену данными между формами12.01.2019, 21:52. Показов 1607. Ответов 4
Добрый день. Стоит задача разработки приложения на С++ с CLI Windows Forms, т.е. на формах. Делается это все в MS VS17.
Шаблон проекта CLI Windows Forms создавался по урокам на Ютубе, где показывают, как создать проект с формами на С++, т.к. в VS17 шаблон давно убрали. Формы были успешно созданы, размещены объекты управления. Далее мне нужно будет создать несколько пользовательских классов, к переменным которых я должен иметь возможность обращаться из любой формы. Но на данном этапе я не могу даже просто передать значение из одного формы в другую. Ранее в VS2010 использовал грубый метод с Extern, но сейчас от его использования должен отказаться, нужно что-то нормальное, что не будет нарушать правила ООП и т.д. К сожалению, я еще достаточно слаб в программировании, поэтому гугление способов передачи данных между формами не принесли особого результата, т.к. часто народ приводит сразу код и небольшим объяснением и я попросту многого не понимаю в приведенных листингах, обычно достаточно громоздко, не получается уловить суть. Пробовал делать нужные объекты на форме Паблик и в текстовом редакторе обращаться получалось, но сборка не проходила, т.к. выбивало ошибку Необъявленный идентификатор. Потом нашел еще способ обмена с помощью иерархии форм, родительская и дочерние. В текстовом редакторе без подчеркиваний указать и определить родителя удалось, а вот при сборке опять Необъявленный идентификатор. Всю кучу кода приводить не буду, т.к. 80% там это авто-создание классов форм и описание свойств объектов на форме. Привожу основные части кода. GeneralForm.h(главная форма) Кликните здесь для просмотра всего текста
GeneralForm.cpp(главная форма) Кликните здесь для просмотра всего текста
CreateGame.h(вторая (дочерняя) форма) Кликните здесь для просмотра всего текста
CreateGame.срр(вторая (дочерняя) форма) Кликните здесь для просмотра всего текста
По итогу, код не подчеркивается, но при сборке вот это:
0
|
|||||||||||||||||||||
| 12.01.2019, 21:52 | |
|
Ответы с готовыми решениями:
4
Необъявленный идентификатор у формы
Обмен данными между формами |
|
0 / 0 / 1
Регистрация: 14.04.2015
Сообщений: 72
|
||||||
| 12.01.2019, 22:43 [ТС] | ||||||
|
Вроде как вычитал, что один из выходов - реализация не в заголовочном, а в срр файле. Но перенеся туда обработчик столкнулся с тем, что не имею ссылку на объект класса формы. Не работает this и не видит объект textBox1.
0
|
||||||
|
Комп_Оратор)
|
|
| 13.01.2019, 00:01 | |
|
ranko5445, для начала посмотрите вот эти ссылки:
Как сделать так, чтобы разные файлы могли видеть друг друга? Ошибки при вызове форм - Syntax error Как добавить кнопки на вторую форму? Как открыть вторую форму?
1
|
|
|
0 / 0 / 1
Регистрация: 14.04.2015
Сообщений: 72
|
|
| 13.01.2019, 00:13 [ТС] | |
|
IGPIGP, спасибо за то, что уделили время теме, но почти все указанные ссылки я читал, а одна из них как раз привела меня к Вам. Я сделал подключение форм, как было указано в темах, так же у меня частично работал вызов второй формы из первой при реализации в заголовочном файле. Но не работают реализации в заголовочном файле второй формы, когда обращаюсь к первой. Я думаю выход из ситуации - перенести реализации в срр файлы форм, но у меня проблема, что нет ссылки на форму, т.е. this и прочее не работает за пределами заголовочного файла, хотя в Вашем примере по одной из ссылок вы именно использовали this в срр файле формы и видимо у Вас почему-то это работает. Прикрепил файлы.
0
|
|
|
Комп_Оратор)
|
||
| 13.01.2019, 01:01 | ||
system::windows::forms::form можно провести очень большим количеством вариантов и, это зависит от Вашей задачи. Например для организации простого диалога DialogBox есть специальный класс:https://social.msdn.microsoft.... =vcgeneral Если объекты нужны с доступом из разных событий то, нужно бы определять их ссылки на уровне полей формы, а не локально в событии (делегате button_click например). Ну посмотрите идею асимметричного включения. Нельзя включить объекты симметрично (каждый в h-фал каждого). Тот кто содержит заголовочник в своём заголовочнике - получает доступ к интерфейсу включаемого объекта, а тот в свою очередь может включить своего визави только в реализацию - свой cpp-файл. То есть, возможности общения у данных объектов реализуются асимметрично, тоже. Например, тот объект, который имеет h-файл партнёра в своём заголовке, видит его код и может запустить его публичный метод вызванный по ссылке на данную форму. А ссылку он может сделать полем (и принять её в своём конструкторе, например) так как видит h фал этой формы. Это позволит обращаться к данной ссылке из любого метода. ranko5445, я когда начинал окна связывать, ссылок на готовые решения в сети вообще было не найти. А положение усугублялось тем, что я ООП вообще не знал. Было весело. Но уверяю, при достаточном терпении, всё получится. Хотя почитать про шаблоны и наследование нужно бы параллельно. Как вариант - возьмите какой-то пример и скомпилируйте. Посмотрите как он работает. И вот ещё что. Точка входа (main) должна бы располагаться в своём файле. А cpp-шники форм - отдельно.
1
|
||
| 13.01.2019, 01:01 | |
|
Помогаю со студенческими работами здесь
5
Обмен данными между формами Обмен данными между формами Обмен данными между формами
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|