|
12 / 12 / 0
Регистрация: 25.06.2011
Сообщений: 165
|
|||||||||||||||||||||
Ошибки при вызове форм - Syntax error03.05.2012, 02:01. Показов 11267. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|