Доступ к внешним переменным

  • Автор темы Sermak
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Sermak

#1
Помогите с такой проблемой - в моем проекте (C++Builder 6) есть несколько модулей. И у меня по непонятной мне причине не возможно получить доступ в модуле к переменной, объявленной в другом модуле. Структура примерно следующая :
Код:
////////////File1.h/////////////////////
struct Ini
{
int data;
Ini () {/*инициализация*/}
};
//--------------------------
class Main
{
public:
Ini Ini_data;
Main () {/*инициализация*/}
};

Main *pMainGlobalObject; // его мы корректно создаем (инициализируем)
// в этом же файле (точнее в .cpp файле) 
....
///////////File2.h/////////////////////////
#ifndef File2H
#define File2H
#include "File1.h"
//---------------------------
class UserMain
{
public:
void AccessMain ();
};
#endif
//////////////////////////////////////////////////////////////////////////////////////
/////////////File2.cpp//////////////////////////////
#pragma hdrstop 
#include "File2.h"
#pragma package(smart_init)
#pragma resource "*.dfm"		  
// верхние четыре строки писал Builder
extern Main *pMainGlobalObject;

void UserMain::
AccessMain ()
{
// ShowMessage(MainGlobalObject->Ini_data.data); // ошибка выполнения 
/*Project MainPro.exe raised exception class EAccessViolation with
at adress такой то in module MainPro.exe. Read of address и тд*/
if (MainGlobalObject == 0) return; // здесь пройсходит выход
// почему то pMainGlobalObject не инициализирован

}
Почему нет доступа к внешнему объекту? Конструкторы по умолчанию есть у всех классов
Может что то в настройках есть, или это компилятор глючит.
Какие могут вообще быть притчины?
Спасибо за внимание.
 
M

Maxx

#2
в файле file2.cpp добавь строчку #include "file1.h", где объявляется класс Main
 
S

Sermak

#3
Нет, не то. В файле file2.cpp подключен file2.h в котором в свою очередь подключен file1.h. да и компилятор бы ругался, еслиб Main был не объявлен, а у меня программа компилируется.
 
?

????

#4
скорее всего MainGlobalObject не инициализирован или указатель указывает не туда. отладчик в помощь или полный исодник, т.к. телепаты в отпуске.
 
Статус
Закрыто для дальнейших ответов.