На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 393 394 [395] 396 397 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата korvin @
    а как ты "превратишь" объект предка в наследника?

    Цитата D_KEY @
    Можно. Там анонимные классы есть. Только проблему это не решит - объект создается в Utils, а не там, где ты хочешь сделать "локальный" метод.

    А, врубился...
    Цитата korvin @
    покажи как бы ты на C++ сделал

    Если бы я мог менять Utils.newA, то сделал бы его шаблонным... Это так, на первый взгляд без погружения в задачу.
      Цитата korvin @
      покажи как бы ты на C++ сделал (там-то, я думаю, твой или подобный способ можно заюзать), может это наведет меня на мысль, как сделать в джаве =/

      ну или может знатоки Delphi/C# что-нибудь подскажут ;-)

      Добавлено
      Цитата MyNameIsIgor @
      Если бы я мог менять Utils.newA, то сделал бы его шаблонным... Это так, на первый взгляд без погружения в задачу.

      а нельзя сделать static cast объекта A в B? =/
        Цитата korvin @
        а нельзя сделать static cast объекта A в B? =/

        B - это локальный наследник? Скастовать то можно, но Utils.newA же всё равно возвращает экземпляр A. Такой каст - просто ошибка.
          Цитата Qraizer @
          const_cast<std::basic_string<TCHAR>::pointer>(str.c_str());

          Тогда уж str.data().

          Добавлено
          А ещё лучше - &str[0], и не надо никаких кастов.
            Цитата Flex Ferrum @
            А ещё лучше - &str[0], и не надо никаких кастов.

            Вот вроде бы должно работать, однако немного смущает, что для vector'а так и написано:
            Цитата
            The elements of a
            vector are stored contiguously, meaning that if v is a vector<T, Allocator> where T is some type other
            than bool, then it obeys the identity &v[n] == &v[0] + n for all 0 <= n < v.size().

            А для basic_string почему-то через итераторы:
            Цитата
            The char-like objects in a basic_string object shall be stored contiguously. That is, for any basic_string
            object s, the identity &*(s.begin() + n) == &*s.begin() + n shall hold for all values of n such that 0
            <= n < s.size().


            Добавлено
            Хотя если судить по описанию basic_string - все должно работать и через [].
              Цитата D_KEY @
              А для basic_string почему-то через итераторы:

              Ага. В несознанке, видимо, писали. Потому что дальше операция [] также определяется через итераторы.
                Цитата D_KEY @
                Да, тут на одно копирование меньше. Но это жесть какая-то, не находишь?

                Ну так да жесть, если обернуть в какой нить shared_ptr, то нормально будет:
                ExpandedWrap disabled
                        std::vector<char> buffer(str.begin(), str.end());
                        some_read_write_fun(&buffer[0], buffer.size());
                        str.assign(&buffer[0]);
                        
                        // С твоим буфером:
                        size_t size = str.size();
                        shared_ptr<char*> buffer = str.release();
                        some_read_write_function(buffer, size);
                        str.assign(buffer);

                Вполне нормально, ну на одну строчку больше, зато на целое копирование меньше.
                  Цитата KILLER @
                  ExpandedWrap disabled
                          std::vector<char> buffer(str.begin(), str.end());
                          some_read_write_fun(&buffer[0], buffer.size());
                          str.assign(&buffer[0]);
                          
                          // С твоим буфером:
                          size_t size = str.size();
                          shared_ptr<char*> buffer = str.release();
                          some_read_write_function(buffer, size);
                          str.assign(buffer);

                  Вполне нормально, ну на одну строчку больше, зато на целое копирование меньше.

                  По новому(текущему) стандарту:
                  ExpandedWrap disabled
                          some_read_write_fun(&str[0], str.length());
                          str = std::string(&str[0]);

                  Копирование будет так же одно.
                  Все, разговор закончен ;) ?
                    Цитата D_KEY @
                    Копирование будет так же одно.
                    Все, разговор закончен ;) ?

                    Тогда да, такое меня устраивает. Жаль что наша контора еще не переходит на него... Его уже кстати приняли официально как я понимаю?
                      Цитата KILLER @
                      Его уже кстати приняли официально как я понимаю?

                      Да, в сентябре еще.
                        Все, закрывайте тему, korvin ничего нового не вбрасывает, делфисты тоже куда то ушли, тема исчерпала себя :D
                          Можно поговорить об освобождении ресурсов, GC, деструкторах, финализаторах и Dispose :)
                          Только мне лень формулировать вброс :(
                            Цитата D_KEY @
                            Можно поговорить об освобождении ресурсов, GC, деструкторах, финализаторах и Dispose :)

                            Уже вроде мусолили это несколько десятков страниц, еще когда конструкторы/деструкторы обсуждали, разве нет?
                            Сообщение отредактировано: KILLER -
                              Цитата KILLER @
                              Цитата D_KEY @
                              Можно поговорить об освобождении ресурсов, GC, деструкторах, финализаторах и Dispose :)

                              Уже вроде мусолили это несколько десятков страниц, еще когда конструкторы/деструкторы обсуждали, разве нет?

                              Конструкторы/деструкторы помню. Проблемы с GC, финализаторами и Dispose - не помню.
                                Цитата D_KEY @
                                Можно поговорить об освобождении ресурсов, GC, деструкторах, финализаторах и Dispose

                                :lool:
                                Цитата D_KEY @
                                Только мне лень формулировать вброс

                                1. Почему в дельфи нет GC? Какие-то фундаментальные сложности? Или он всё же есть в виде каких-то библиотек/расширений?
                                Если нет, то как бы мог выглядеть GC в дельфи?
                                2. Зачем в шарпе финализаторы? На мой дилетантский взгляд они просто не нужны :P
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 393 394 [395] 396 397 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.5473 ]   [ 15 queries used ]   [ Generated: 30.07.26, 09:03 GMT ]