
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.5] |
![]() |
|
Страницы: (117) « Первая ... 25 26 [27] 28 29 ... 116 117 ( Перейти к последнему сообщению ) |
Сообщ.
#391
,
|
|
|
Вообще-то не совсем ту же. Класс Variant написан на C++, CoInitialize - функция WinAPI и явно не на паскале написана, а CreateOleObject сотоит из двух строчек, которые переписать на C++ как два пальца об асфальт. Нормальные претензии будут?
|
![]() |
Сообщ.
#392
,
|
|
кстати, вспоминая сейчас молодость, понял, какой патологический страх появлялся от мысли "написать бы че-нибудь на с\с++"
![]() |
Сообщ.
#393
,
|
|
|
А этого никто не знает. Они выводятся по обстоятельствам во время инстанцирования шаблона при компиляции. Известен лишь ограниченный набор требований к ним.
|
Сообщ.
#394
,
|
|
|
ну вот на смену постепенной и размеренной беседе пришел настоящий холивар
![]() |
Сообщ.
#395
,
|
|
|
![]() |
Сообщ.
#396
,
|
|
Цитата Мяут @ ну вот на смену постепенной и размеренной беседе пришел настоящий холивар ![]() Неа, я исправился. Оффтоп ушёл в PM. |
![]() |
Сообщ.
#397
,
|
|
Цитата H.Iglesias II @ да он про рефлексию (GetPropList)... да, язык не поддерживает этого... а зачем? а что тут переводить? |
Сообщ.
#398
,
|
|
|
Ух ты, на дельфяк что-то вроде рефлексии есть? Прикольно. Я бы назвал это «метанедопрограммирование». А Delphi -- это не просто Object Pascal, а еще и VCL. Вот положа руку на сердце: удобнее VCL для рисования графических морд я не видел. Даже Qt и Gtk нервно курят в сторонке. Добавлено Цитата archimed7592 @ variant со всеми свойствами, которые у него есть можно без особых проблем реализовать в с++... Не переведешь. В Delphi любой[i] тип можно запихнуть в variant, а уж array of variant -- вообще свобода мысли --, в то время, как твой плюсовый вариант будет работать [i]только для описанных тобой типов внутри твоего проекта. В этом смысле Delphi более объектно-ориентированный язык: даже элементарные типы имеют общего предка. CVariant какой-нибудь чтоли? Не имеет никакого отношения к дельфевому variant'у. Для расширения кругозора? VCL -- отличный пример многократного повторного использования кода. Добавлено Цитата H.Iglesias II @ а что тут переводить? А что ты перевел? У меня не компилится. Linux x86_64, gcc-4.1.2. |
![]() |
Сообщ.
#399
,
|
|
Цитата linuxfan @ про boost::any, наверное не слыхал ниче? Не переведешь. В Delphi любой тип можно запихнуть в variant, а уж array of variant -- вообще свобода мысли --, в то время, как твой плюсовый вариант будет работать только для описанных тобой типов внутри твоего проекта. В этом смысле Delphi более объектно-ориентированный язык: даже элементарные типы имеют общего предка. ![]() Цитата linuxfan @ лесом идёт ваше многократное использование в виде T*List VCL -- отличный пример многократного повторного использования кода. ![]() |
Сообщ.
#400
,
|
|
|
Цитата linuxfan @ Даже Qt и Gtk нервно курят в сторонке. ОбоснуЙ! ![]() |
Сообщ.
#401
,
|
|
|
Ни фига себе объёмы
![]() В C++ это явно не лучше. Оператор -> можно применять как ко встроенным указателям, так и имитирующим их поведение smart указателям, а также пользовательским итераторам. Отсутствие разделения на . и -> привело бы к серьёзным трудностям. Для Delphi это, может быть, не столь актуально, т.к. обобщённое программирование там практически отсутствует (что явно не есть плюс для этого языка). Касаемо :: тоже всё правильно ![]() ![]() class Base { public: virtual void func() { /*...*/ } }; class Derived : public Base { public: void func() { /*...*/ } }; void f() { Base* pBase = new Derived; pBase->func(); // вызов Derived::func за счёт использования RTTI pBase->Base::func(); // явный вызов Base::func } Сразу понятно, что к чему относится. А как бы это выглядело с одними точками? ![]() Цитата archimed7592 @ в с++ они не реализованны по тем причинам, что там не только get и set будет... там ещё += -= *= &= |= >>= <<= и т. д. и проперти будут только путать, имхо... Вот как раз-таки в этих случаях property обладают преимуществом перед прямыми вызовами get/set, IMHO. Почитай топик property. Как просто, оказывается, можно заменить шаблоны ![]() ![]() Цитата Мяут @ ну вот на смену постепенной и размеренной беседе пришел настоящий холивар Я бы охарактеризовал это как детский сад ![]() Цитата linuxfan @ В Delphi любой[i] тип можно запихнуть в varian Даже любой пользовательский тип? И чего с ним потом можно делать? Цитата archimed7592 @ про boost::any, наверное не слыхал ниче? Ты, наверное, хотел сказать boost::variant? |
![]() |
Сообщ.
#402
,
|
|
Цитата Dantes @ я хотел сказать boost::any Ты, наверное, хотел сказать boost::variant? ![]() ![]() |
Сообщ.
#403
,
|
|
|
Ну да, в any-то ты запихнёшь что угодно, только вот обратно доставать не очень удобно.
|
![]() |
Сообщ.
#404
,
|
|
Цитата Dantes @ а из дельфи-variant удобно? только вот обратно доставать не очень удобно. ![]() |
Сообщ.
#405
,
|
|
|
Я так понял, что variant автоматом преобразуется в нужный тип. Я не прав?
![]() Добавлено Тем более, в приведённых примерах было обращение к членам объекта - о таком boost::any и boost::variant могут только мечтать. |