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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Sermak, 5 окт 2006.

Статус темы:
Закрыта.
  1. Sermak

    Sermak Гость

    Помогите с такой проблемой - в моем проекте (C++Builder 6) есть несколько модулей. И у меня по непонятной мне причине не возможно получить доступ в модуле к переменной, объявленной в другом модуле. Структура примерно следующая :
    Код (Text):
    ////////////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 не инициализирован

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

    Maxx Гость

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

    Sermak Гость

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

    ???? Гость

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

Поделиться этой страницей