1 / 1 / 1
Регистрация: 09.05.2014
Сообщений: 13
1

Необъявленный идентификатор (связь файлов через extern, include)

10.05.2015, 17:27. Показов 1461. Ответов 1
Метки нет (Все метки)

-Есть файл hfile.h, в котором содержатся определения пары классов, использующиеся во всей программе.
-Есть главный файл mainfile.cpp с функцией main, в которой инициализируется запуск формы form1, а также объявлены несколько глобальных переменных и динамических массивов.
-Есть хэдер первой формы form1.h, в котором в обработчиках событий по клику на кнопки я заявляю нужные глобальные переменные как extern.

Выглядит это примерно так:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//mainfile.cpp
#include "hfile.h"
#include "form1.h"
using namespace std;
using namespace System;
using namespace System::Windows::Forms;
 
USI jobs, ops, machtypes, totalmachines;//USI - typedef unsigned short int, объявлено в hfile
Mach * machinetimes = nullptr;      Op * OpRectangles = nullptr;//Op,Mach - классы, объявленные в hfile
bool gotaschedule = false, gotashopdata = false, 
 
[STAThread]
void main(array<String^> ^ args)
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
    form1::form1 form;
    Application::Run(%form);    
}

Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
//form1.h
#pragma once
#include <iomanip>
#include <windows.h>
//////////
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^ e) 
{
extern USI jobs, ops, machtypes, totalmachines;
extern Mach * machinetimes; extern Op * OpRectangles;
extern bool gotaschedule, gotashopdata;
//////
}

В таком виде все работает, внешние переменные в form1.h распознаются.

Теперь мне нужно, чтобы по нажатию на кнопку в первой форме появлялась вторая. Я добавляю новую форму form2 в проект, в коде form1.h добавляю #include "form2.h", создаю обработчик
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
private: System::Void editschmenu_Click(System::Object^  sender, System::EventArgs^  e) 
{
    form2^ Nowdo = gcnew form2;
    Nowdo->ShowDialog();
}


Но когда я пытаюсь аналогичным способом подключить глобальные переменные в обработчике событий во второй форме, при компиляции возникает "error c2065 cout необъявленный идентификатор"
Кликните здесь для просмотра всего текста
C++
1
2
3
4
private: System::Void form2_Load(System::Object^  sender, System::EventArgs^  e) 
{
extern USI  machtypes, totalmachines;
extern Mach * machinetimes;


Пробовал на всякий случай засунуть #include "form2.h" в mainfile.cpp, не помогло.

Чувствую, что все очень просто на самом деле, но сам что-то дойти не могу.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2015, 17:27
Ответы с готовыми решениями:

Подключение файлов через extern
пишу такую фигню //HH2.cpp #include &quot;mouse.h&quot; int main() { HWND hWnd = NULL;

Не работает глобальный идентификатор extern
У меня два файла : main.cpp func.cpp во втором файле обьявлена и инициализирована extern int a...

Необъявленный идентификатор
Кто знает, где ошибка в этом коде? double *increase(unsigned int size, double *n) { double...

Необъявленный идентификатор
addClientCommand( &quot;m0d_tele_locations&quot;, (int)cmd_tele_locations ); addClientCommand(...

1
Администратор
Эксперт .NET
9346 / 4628 / 755
Регистрация: 17.04.2012
Сообщений: 9,485
Записей в блоге: 14
14.05.2015, 12:13 2
Цитата Сообщение от Ayerice Посмотреть сообщение
cout необъявленный идентификатор
Именно cout? Где вы его используете? Либо найдите и уберите, либо
C++
1
2
#include <iostream>
using namespace std;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2015, 12:13
Помогаю со студенческими работами здесь

Необъявленный идентификатор j
Нужно сформировать квадратную матрицу вида: 1 2 ...... n n n-1 ..... 1 1 2 ...... n n...

Необъявленный идентификатор
Думаю проблему в скобках, где не могу найти=( #include &lt;iostream&gt; #include &lt;windows.h&gt; using...

Необъявленный идентификатор
Всем привет). Не могу понять в чем ошибка. Пишет что i и j необъявленный идентификатор в 33 строке....

необъявленный идентификатор
#include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int vichis(int,int,int&amp;); void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru