Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2010, 02:30   #1
profor
 
Регистрация: 04.04.2010
Сообщений: 8
Вопрос сlass и Access violation

Есть задача: … определить иерархию сегментов речной сети …
Описал классы так:
Код:
//================================Per==========================================
class TMyPer: public TObject
{//пересечение (связь с источниками)
public:
 int P_SInd;   //Пересечение_СегментИндекс (индекс сегмента с которым пересекается)
 int InterInd; //ИнтерцептИндекс (индекс участка пересечения)
 int Posit;    //Позиция пересечения  0 - в начале участка; 1 - в конце участка

 TMyPer(){P_SInd=0;InterInd=0;Posit=0;}   //конструктор
};
//================================PerList======================================
class TMyPList: public TObjectList
{
 private:
    void __fastcall SetItem(int index, TMyPer* val)
    {TObjectList::SetItem(index, val);}
public:
    __property TMyPer* Items[int index] = {read=GetItem, write=SetItem};
};
//================================Segment====================================
class TMySegmet: public TObject
{
public:
 int Start,End,Levl;
 TMyPList * PL;              //пересечения
 TMySegmet()                 //конструктор
      {Start=0;End=0;Levl=0;
       PL=new TMyPList();}
};
//================================SegmentList================================
class TMySegmetList: public TObjectList
{
 private:
    void __fastcall SetItem(int index, TMySegmet* val)
    {TObjectList::SetItem(index, val);}
public:
    __property TMySegmet* Items[int index] = {read=GetItem, write=SetItem};
};
//===========================================================================
Далее где-то в коде:
Код:
TMyPList * list=new TMyPList;
list->Add(new TMyPList);
list->Items[0]->Posit=5;   //все работает

TMySegmetList * Segment=new TMySegmetList;
Segment->Add(new TMySegmetList);
Segment->Items[0]->PL->Add(new(TMyPList)); //Access violation
И ни как не могу понять, почему?
profor вне форума Ответить с цитированием
Старый 05.04.2010, 14:12   #2
evgn
Разрабатываюсь....
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 68
По умолчанию

Цитата:
Далее где-то в коде:
Код:
TMyPList * list=new TMyPList;
list->Add(new TMyPList);
list->Items[0]->Posit=5;   //все работает

TMySegmetList * Segment=new TMySegmetList;
Segment->Add(new TMySegmetList);
Segment->Items[0]->PL->Add(new(TMyPList)); //Access violation
И ни как не могу понять, почему?
Все правильно. В TMySegmetList нет PL.
Код:
TMySegmetList * Segment=new TMySegmetList;
Segment->Add(new TMySegmet);//TMySegmetList -> TMySegmet
Segment->Items[0]->PL->Add(new(TMyPList)); //ok?
evgn вне форума Ответить с цитированием
Старый 05.04.2010, 15:21   #3
profor
 
Регистрация: 04.04.2010
Сообщений: 8
По умолчанию

Да, Спасибо. Поспешил ...
profor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access violation at address... Ralf_ru Помощь студентам 13 05.04.2009 05:20
Access Violation SunKnight Общие вопросы Delphi 2 05.06.2008 16:46
Access violation at address.. RegentM Общие вопросы Delphi 4 01.11.2007 03:46
Access Violation Carbon Общие вопросы Delphi 12 18.09.2007 19:55