Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 393 394 [395] 396 397 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#5911
,
|
|
|
|
Цитата D_KEY @ Можно. Там анонимные классы есть. Только проблему это не решит - объект создается в Utils, а не там, где ты хочешь сделать "локальный" метод. А, врубился... Если бы я мог менять Utils.newA, то сделал бы его шаблонным... Это так, на первый взгляд без погружения в задачу. |
|
Сообщ.
#5912
,
|
|
|
|
Цитата korvin @ покажи как бы ты на C++ сделал (там-то, я думаю, твой или подобный способ можно заюзать), может это наведет меня на мысль, как сделать в джаве =/ ну или может знатоки Delphi/C# что-нибудь подскажут ;-) Добавлено Цитата MyNameIsIgor @ Если бы я мог менять Utils.newA, то сделал бы его шаблонным... Это так, на первый взгляд без погружения в задачу. а нельзя сделать static cast объекта A в B? =/ |
|
Сообщ.
#5913
,
|
|
|
|
Цитата korvin @ а нельзя сделать static cast объекта A в B? =/ B - это локальный наследник? Скастовать то можно, но Utils.newA же всё равно возвращает экземпляр A. Такой каст - просто ошибка. |
|
Сообщ.
#5914
,
|
|
|
|
Тогда уж str.data(). Добавлено А ещё лучше - &str[0], и не надо никаких кастов. |
|
Сообщ.
#5915
,
|
|
|
|
Цитата 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 - все должно работать и через []. |
|
Сообщ.
#5916
,
|
|
|
|
Цитата D_KEY @ А для basic_string почему-то через итераторы: Ага. В несознанке, видимо, писали. Потому что дальше операция [] также определяется через итераторы. |
|
Сообщ.
#5917
,
|
|
|
|
Ну так да жесть, если обернуть в какой нить shared_ptr, то нормально будет: ![]() ![]() 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); Вполне нормально, ну на одну строчку больше, зато на целое копирование меньше. |
|
Сообщ.
#5918
,
|
|
|
|
Цитата KILLER @ ![]() ![]() 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); Вполне нормально, ну на одну строчку больше, зато на целое копирование меньше. По новому(текущему) стандарту: ![]() ![]() some_read_write_fun(&str[0], str.length()); str = std::string(&str[0]); Копирование будет так же одно. Все, разговор закончен ? |
|
Сообщ.
#5919
,
|
|
|
|
Цитата D_KEY @ Копирование будет так же одно. Все, разговор закончен ? Тогда да, такое меня устраивает. Жаль что наша контора еще не переходит на него... Его уже кстати приняли официально как я понимаю? |
|
Сообщ.
#5920
,
|
|
|
|
Цитата KILLER @ Его уже кстати приняли официально как я понимаю? Да, в сентябре еще. |
|
Сообщ.
#5921
,
|
|
|
|
Все, закрывайте тему, korvin ничего нового не вбрасывает, делфисты тоже куда то ушли, тема исчерпала себя
|
|
Сообщ.
#5922
,
|
|
|
|
Можно поговорить об освобождении ресурсов, GC, деструкторах, финализаторах и Dispose
Только мне лень формулировать вброс |
|
Сообщ.
#5923
,
|
|
|
|
Цитата D_KEY @ Можно поговорить об освобождении ресурсов, GC, деструкторах, финализаторах и Dispose Уже вроде мусолили это несколько десятков страниц, еще когда конструкторы/деструкторы обсуждали, разве нет? |
|
Сообщ.
#5924
,
|
|
|
|
Цитата KILLER @ Цитата D_KEY @ Можно поговорить об освобождении ресурсов, GC, деструкторах, финализаторах и Dispose Уже вроде мусолили это несколько десятков страниц, еще когда конструкторы/деструкторы обсуждали, разве нет? Конструкторы/деструкторы помню. Проблемы с GC, финализаторами и Dispose - не помню. |
|
Сообщ.
#5925
,
|
|
|
|
Цитата D_KEY @ Можно поговорить об освобождении ресурсов, GC, деструкторах, финализаторах и Dispose ![]() Цитата D_KEY @ Только мне лень формулировать вброс 1. Почему в дельфи нет GC? Какие-то фундаментальные сложности? Или он всё же есть в виде каких-то библиотек/расширений? Если нет, то как бы мог выглядеть GC в дельфи? 2. Зачем в шарпе финализаторы? На мой дилетантский взгляд они просто не нужны |