На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Действия во вызова конструктора , ... базового класса
    Опять туплю... rolleyes.gif Как вот такой код "перевести" на стандартный С++. Чтобы порядок выполнения операторов / инциализации сохранился:


    constructor TMySemaphore.Create(iMaxCount: Integer; iInitialCount: Integer; iName: PChar);
    begin
      if iInitialCount = -1 then iInitialCount := iMaxCount;
      inherited Create(CreateSemaphore(nil, iMaxCount, iInitialCount, iName));
      if fHandle = 0 then raise MySemaphoreCreationFail.Create;
    end;
      Если только так:

      TMySemaphore(int iMaxCount, int iInitialCount, const char* name)
       : TSemaphoreBase(iMaxCount, iInitialCount == -1 ? iMaxCount : iInitialCount, name)
      {
       if (fHandle == 0)
          throw MySemaphoreCreationFail();
      }


      Добавлено в
      В сложных вариантах (когда перед вызовом конструктора предка выполняется нетривиальный код) можешь использовать парадигму отложенной инциализации, когда в конструкторе ничего существенного не делается, а сразу после конструирования вызывается метод (не будем мудрить) Create, выполняющий всю необходимую инициализацию и в том порядке, в котором это необходимо.
      Сообщение отредактировано: Flex_Ferrum -
        Цитата (Flex_Ferrum @ 24.12.03, 10:24)
        Если только так:

        TMySemaphore(int iMaxCount, int iInitialCount, const char* name)
         : TSemaphoreBase(iMaxCount, iInitialCount == -1 ? iMaxCount : iInitialCount, name)
        {
         if (fHandle == 0)
            throw MySemaphoreCreationFail();
        }


        Добавлено в
        В сложных вариантах (когда перед вызовом конструктора предка выполняется нетривиальный код) можешь использовать парадигму отложенной инциализации, когда в конструкторе ничего существенного не делается, а сразу после конструирования вызывается метод (не будем мудрить) Create, выполняющий всю необходимую инициализацию и в том порядке, в котором это необходимо.

        Спасибо. Буду пробовать делать отложенную инициализацию smile.gif
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0641 ]   [ 16 queries used ]   [ Generated: 4.05.24, 01:56 GMT ]