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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2012, 15:14   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Uses. Правильно обьявить 2 класса, чтобы те взаимно использовали друг-друга.

Доброго времени суток!

Часте возникает казусная ситуация:
Код:
type
  TWorkThread = class(TThread)
  private
    fList: TList; <- - ОН НЕ УМЕЕТ ХРАНИТЬ TOBJECT. 
....

type
  TDataList = class(TList)
  private
.....
TDataList - список приспособленный к хранению обьектов-наследников TObject, и правильным обращением с этими обьектами.

Казус в том, что в tWorkThread нужно указать fList: TDataList; а класс верхнего уровня, не может указывать на класс нижнего уровня.
Но т.к. то, что вверху - не вкурсе, что этот класс расположен внизу, то компилятор благополучно посылает меня лесом.

Есть вариант с разными uses, но тут будет бесконечный цикл, в uses после implementation я не могуобьявить модуль т.к. его не будет видеть описанный выше класс.


Как быть? нЕ первый раз сталкиваюсь, но тут уже точьный тупик.
Человек_Борща вне форума Ответить с цитированием
Старый 02.06.2012, 15:21   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
type
  TDataList = class;
  TWorkThread = class(TThread)
  private
    fList: TDataList;....
  ...
  end;

  TDataList = class(TList)
  private
.....
  end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.06.2012, 15:57   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Спасибо. Помогло.
Человек_Борща вне форума Ответить с цитированием
Старый 03.06.2012, 08:06   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Это называется forward-объявление. Ну, чтобы в следующий раз знал, что гуглить.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зависимость листбоксов друг от друга Seishi Microsoft Office Excel 1 29.05.2011 23:13
как реализовать чтобы при нажатии прямоугольники меняли цвета не зависимо друг от друга programmm Win Api 0 18.05.2011 17:50
C++/CLI. Не могу заставить два класса видеть друг друга Хохол Общие вопросы .NET 3 29.03.2011 10:43
Два класса должны использовать не статичные методы друг друга. Adis_ Общие вопросы C/C++ 4 21.05.2010 18:19
Строчки налезают друг на друга Lukker Microsoft Office Word 4 27.02.2010 07:38