|
12 / 12 / 0
Регистрация: 25.06.2011
Сообщений: 165
|
|||||||||||||||||||||
Ошибки при вызове форм - Syntax error03.05.2012, 02:01. Показов 11309. Ответов 20
Метки нет (Все метки)
Visual C++ Пытаюсь подключить одну форму к другой и наоборот. Вот что выходит: 1) Если в первой форме:
Error 8 error C2061: syntax error : identifier 'Form1' c:\users\женя\documents\visual studio 2008\projects\project\project\Form2.h 174 Error 3 error C2061: syntax error : identifier 'Form2' c:\users\женя\documents\visual studio 2008\projects\project\project\Form1.h 367 Error 7 error C2065: 'f1' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\project\project\Form2.h 174 Error 9 error C2065: 'f1' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\project\project\Form2.h 175 Error 2 error C2065: 'f2' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\project\project\Form1.h 367 Error 4 error C2065: 'f2' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\project\project\Form1.h 368 Error 6 error C2065: 'Form1' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\project\project\Form2.h 174 Error 1 error C2065: 'Form2' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\project\project\Form1.h 367 Error 5 error C2227: left of '->Show' must point to class/struct/union/generic type c:\users\женя\documents\visual studio 2008\projects\project\project\Form1.h 368 Error 10 error C2227: left of '->Show' must point to class/struct/union/generic type c:\users\женя\documents\visual studio 2008\projects\project\project\Form2.h 175 2) Если в первой:
Error 3 error C2061: syntax error : identifier 'Form2' c:\users\женя\documents\visual studio 2008\projects\project\project\Form1.h 367 Error 2 error C2065: 'f2' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\project\project\Form1.h 367 Error 4 error C2065: 'f2' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\project\project\Form1.h 368 Error 1 error C2065: 'Form2' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\project\project\Form1.h 367 Error 5 error C2227: left of '->Show' must point to class/struct/union/generic type c:\users\женя\documents\visual studio 2008\projects\project\project\Form1.h 368 3) Если в первой:
Нужно подключить формы друг к другу по первому варианту. Как?
0
|
|||||||||||||||||||||
| 03.05.2012, 02:01 | |
|
Ответы с готовыми решениями:
20
Ошибки в C++/CLI - syntax error : missing ';' before '^'
|
|
12 / 12 / 0
Регистрация: 25.06.2011
Сообщений: 165
|
|
| 05.05.2012, 04:33 [ТС] | |
|
Ладно, напишите, как вы подключали одну форму к другой.
0
|
|
|
Комп_Оратор)
|
|
| 05.05.2012, 13:16 | |
|
Дело тут не в версии VS и даже не в языке. Посмотрите здесь:
Ответы на 7 самых частых вопросов по WinForms это для С#, но разница с С++/cli не велика.
0
|
|
|
12 / 12 / 0
Регистрация: 25.06.2011
Сообщений: 165
|
|||||||||||
| 06.05.2012, 01:14 [ТС] | |||||||||||
|
Статья полезная, но я использую visual studio, поэтому форма создается автоматом (add->new Item), а если я буду использовать
Или как вы связали две формы в visual studio?
0
|
|||||||||||
|
Комп_Оратор)
|
|||||||||||||||||||||
| 06.05.2012, 02:31 | |||||||||||||||||||||
|
Хорошо, что Вы прочли инфу по ссылке. Там вполне достаточно всего, что бы адаптировать под С++/cli. Но раз сложно то Вот код для С++/cli, несколько не похожий, правда, на то, что Вы видели.
Сделаем изменение текста в форме1 из формы2: 1) Имеются 2 формы - Form1 и Form2, на Form1 располагаются Button (button1, будет открывать вторую форму) и Label (label1, здесь будем менять текст). На Form2 - button1, по нажатию на которую будет происходить смена текста в label1. 2) Так как нам из первой формы нужно иметь доступ ко второй, а из второй к первой, то будет возникать проблема перекрестных ссылок (когда Form1.h ссылается на Form2.h, который в свою очередь опять ссылается на Form1.h). Для того, чтобы этого избежать, код первой формы (Form1), который будет иметь доступ ко второй форме (Form2) мы вынесем из h-файла в cpp файл. Таким образом нужно создать файл Form1.cpp. 3) Объявить открытый метод Set в Form1.h для того, чтобы можно было изменить текст label1: public: void Set(String^ text){label1->Text = text;} 4) В файле Form2.h подключаем Form1.h:
Form1.cpp:
Еще можно посмотреть обсуждение на зарубежном форуме по этой же проблеме - погулив Submitting Form2 and changing Form1 by it's value (Ссылку где-то посеял )
1
|
|||||||||||||||||||||
|
12 / 12 / 0
Регистрация: 25.06.2011
Сообщений: 165
|
||||||
| 09.05.2012, 05:00 [ТС] | ||||||
|
Решение правильное, но не для меня, пока.
Очень неудобно все переделывать. Мне нужно то решение, которое больше всего подходит под первый пост. Самое простое и стандартное. Можно же открыть вторую форму так:
Надо исправить код в первом посте. Заранее спасибо.
0
|
||||||
|
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
|
|
| 09.05.2012, 06:52 | |
|
Попробуйте создать глобальные переменные (примерчик), которые являются указателями на соответствующие формы. Причем значения этих переменных прописать в int main().
0
|
|
|
12 / 12 / 0
Регистрация: 25.06.2011
Сообщений: 165
|
|
| 15.05.2012, 18:04 [ТС] | |
|
0
|
|
|
Комп_Оратор)
|
||||||
| 15.05.2012, 18:28 | ||||||
|
doon, для свободного обмена данными в обоих направлениях нужно потрудится. Советую посмотреть то, что Вам показалось сложным ещё раз - окупится.
![]() В случае, если Вам вторая форма нужна, разово и для ввода не большого количества данных - строки, например, можно сделать так: Главное Вы уже сделали - Form2 и #include "Form2.h" в хидере первой формы. 1. Смените модификатор доступа текстбокса, например textBox1, второй формы с private на public. 2. В первой форме покажите вторую модально:
2
|
||||||
|
12 / 12 / 0
Регистрация: 25.06.2011
Сообщений: 165
|
||||||||||||||||
| 19.05.2012, 23:55 [ТС] | ||||||||||||||||
|
Сделал все так, как Вы сказали в 5 сообщении. Вот, собственно, код и ошибки (выкладываю полностью для целостности картины):
Form1.h:
Error 2 error C2653: 'Form1' : is not a class or namespace name c:\Users\женя\Documents\Visual Studio 2008\Projects\test1\test1\Form1.cpp 5 Error 3 error C2065: 'Form2' : undeclared identifier c:\Users\женя\Documents\Visual Studio 2008\Projects\test1\test1\Form1.cpp 6 Error 4 error C2065: 'f2' : undeclared identifier c:\Users\женя\Documents\Visual Studio 2008\Projects\test1\test1\Form1.cpp 6 Error 5 error C2061: syntax error : identifier 'Form2' c:\Users\женя\Documents\Visual Studio 2008\Projects\test1\test1\Form1.cpp 6 Error 6 error C2065: 'f2' : undeclared identifier c:\Users\женя\Documents\Visual Studio 2008\Projects\test1\test1\Form1.cpp 7 Error 7 error C2227: left of '->Show' must point to class/struct/union/generic type c:\Users\женя\Documents\Visual Studio 2008\Projects\test1\test1\Form1.cpp 7 Error 8 error C2673: 'testApp::button1_Click' : global functions do not have 'this' pointers c:\Users\женя\Documents\Visual Studio 2008\Projects\test1\test1\Form1.cpp 8 Error 9 error C2227: left of '->Hide' must point to class/struct/union/generic type c:\Users\женя\Documents\Visual Studio 2008\Projects\test1\test1\Form1.cpp 8 Error 1 error C2039: 'Set' : is not a member of 'test1::Form1' c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form2.h 88 Error 10 error C2039: 'Set' : is not a member of 'test1::Form1' c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form2.h 88
0
|
||||||||||||||||
|
Комп_Оратор)
|
||||||||||||
| 20.05.2012, 00:59 | ||||||||||||
1
|
||||||||||||
|
12 / 12 / 0
Регистрация: 25.06.2011
Сообщений: 165
|
|
| 20.05.2012, 01:50 [ТС] | |
|
Спасибо, остались только:
Error 1 error C2039: 'Set' : is not a member of 'test1::Form1' c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form2.h 88 Error 2 error C2039: 'Set' : is not a member of 'test1::Form1' c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form2.h 88
1
|
|
|
Комп_Оратор)
|
||||||
| 20.05.2012, 02:22 | ||||||
|
doon, вы создали открытый метод Set как сказано в примере?
3) Объявить открытый метод Set в Form1.h для того, чтобы можно было изменить текст label1:
0
|
||||||
|
12 / 12 / 0
Регистрация: 25.06.2011
Сообщений: 165
|
|
| 20.05.2012, 02:22 [ТС] | |
|
Поставил parentForm->label1->Text = "hello from form2"; в Form2.h.
Ошибки: Error 1 error C2248: 'test1::Form1::label1' : cannot access private member declared in class 'test1::Form1' c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form2.h 88 Error 2 error C2248: 'test1::Form1::label1' : cannot access private member declared in class 'test1::Form1' c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form2.h 88 В инициализации label1 поставил public - идет без ошибок. Но при запуске нету реакции на нажатие кнопки в Form1.
0
|
|
|
Комп_Оратор)
|
|||
| 20.05.2012, 02:46 | |||
![]() Добавьте обработчик из дизайнера.
1
|
|||
|
12 / 12 / 0
Регистрация: 25.06.2011
Сообщений: 165
|
|||||||||||
| 20.05.2012, 03:04 [ТС] | |||||||||||
|
Сделал через дизайнер.
Вот Form1.h:
Error 4 error C2059: syntax error : 'this' c:\Users\женя\Documents\Visual Studio 2008\Projects\test1\test1\Form1.cpp 5 Error 5 error C2039: 'button1_Click_1' : is not a member of 'test1::Form1' c:\Users\женя\Documents\Visual Studio 2008\Projects\test1\test1\Form1.cpp 5 Error 1 error C2039: 'button1_Click_1' : is not a member of 'test1::Form1' c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form1.h 75 Error 2 error C2065: 'button1_Click_1' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form1.h 75 Error 3 error C3350: 'System::EventHandler' : a delegate constructor expects 2 argument(s) c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form1.h 75 Error 6 error C2039: 'button1_Click_1' : is not a member of 'test1::Form1' c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form1.h 75 Error 7 error C2065: 'button1_Click_1' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form1.h 75 Error 8 error C3350: 'System::EventHandler' : a delegate constructor expects 2 argument(s) c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form1.h 75 Error 9 error C2039: 'button1_Click_1' : is not a member of 'test1::Form1' c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form1.h 75 Error 10 error C2065: 'button1_Click_1' : undeclared identifier c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form1.h 75 Error 11 error C3350: 'System::EventHandler' : a delegate constructor expects 2 argument(s) c:\users\женя\documents\visual studio 2008\projects\test1\test1\Form1.h 75 Ошибки появились после добавления this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click_1);
0
|
|||||||||||
|
Комп_Оратор)
|
||
| 20.05.2012, 03:34 | ||
|
button1_Click() в Form1.h Вы опять же скопировали из примера. А нужно было его создать в дизайнере, тогда бы и кнопка на него подписалась. Это и вручную делается, но Вам ещё с дизайнером бы разобраться. Ведь теперь когда вы добавили обработчик из дизайнера, он видя что какойто button1_Click() уже есть прописал Вам: button1_Click_1() Далее понимая, что два обработчика не нужны Вы удалили... button1_Click_1()!!! Теперь просто переименуйте button1_Click() в button1_Click_1() и всё заработает)
1
|
||
|
12 / 12 / 0
Регистрация: 25.06.2011
Сообщений: 165
|
|
| 20.05.2012, 04:20 [ТС] | |
|
Да, все вышло!
0
|
|
|
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 5
|
|
| 15.07.2014, 04:25 | |
|
0
|
|
|
Комп_Оратор)
|
||||||||||||
| 15.07.2014, 17:41 | ||||||||||||
![]() Дело в том, что в С++/cli как и в C# ссылку можно объявить без инициализации. То есть семантически ссылки в этих языках, это более указатели похожие на ссылки только в том, что доступ к физическому адресу через них отсутствует. Другими словами объявляя:
![]() Пока Вы не инициализируете переменную читать от-туда плохо, а писать туда на некоторых OS и беда. Windows защищается весьма успешно. ![]() Можно констатировать, что Майкрософт сделала гораздо больше сверх того, что разумно, когда пытаясь привлечь к своему детищу плюсовиков, приняла решение назвать свои управляемые дескрипторы ссылками. В итоге, даже люди лояльные к "тёмной стороне")), вынуждены называть этих зверей то ссылками, то указателями, когда пишут книжки о течении силы DoTNet. Неинициализированная ссылка, - типичная ошибка. Там, где вы не создали объекта оператором gcnew для ссылочного класса и попытались обратиться по
0
|
||||||||||||
| 15.07.2014, 17:41 | |
|
Помогаю со студенческими работами здесь
20
Непонятная ошибка компилятора "error C2059: syntax error 'constant'" Класс - Ошибки при вызове методов: В вызове функции отсутствует список аргументов Ошибки синтаксиса: syntax error, unexpected 'else'
PDO - Syntax error or access violation: 1064 You have an error in your SQL syntax Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|