Здравствуйте, DOOM, Вы писали:
J>>А это вообще засада... Напишешь obj.FValue := ... вместо obj.Value := ... и кирдык всему тому что должно происходить внутри SetValue. А компилятор, зараза, не обругает...
DOO>warning скажет! Сделай warnings as errors раз так жить проще.
Чего он скажет???
Сейчас только сделал
TClass1 = class
private
FValue: single
public
property Value: single read FValue write SetValue
...
TClass2 = class
private
Class1: TClass1;
public
constructor Create;
...
constructor TClass2.Create;
begin
Class1 := TClass1.Create;
Class1.Value := 10.0;
Class1.FValue := 20.0;
end;
Здравствуйте, mihailik, Вы писали:
J>>А... Сэмулируй мне, плеазе, друзей на Дельфях. Страдаю без них жутко...
M>Френдов-то? Да там все, кто внутри одного файла — френды.
Да я знаю. А если мне нужна фабрика сложного класса??? Получается файл неведренных размеров... А если хочется фабрику запихнуть в dll? Вообще фиг чего получится, ну или надо класс в инклюды пихать...
Здравствуйте, Serginio1, Вы писали:
WH>>А чем чисто абстрактный класс без данных отличается от интерфейса? S> Чем ??? Посмотри на реализацию придуманную M$.
Еще раз: ФИЗИЧЕСКОЕ устройчтво меня не волнует. А ЛОГИЧЕСКИ это тоже самое. S>Дла каждого объекта (не класса) генерятся в памяти функции заглушки, которые генерят вызов методов класса с передачей данных объекта (Self) в методы класса.
Ты сам понял что сказал?
На всякий случай скажу как дело обстоит на самом деле.
Для каждого класса(не объекта)компилятор генерирует таблицу виртуальных функций при вызове просто берем указатель из таблици и вывываем this передается через ECX. S> Вот и поймешь в чем причина. Не прав.
S> Гхы-Гхы. WolfHound хоть ты и RSDN но рассыждаешь как зеленоротый птенец. НА ЛИЧНОСТИ ПЕРЕХОДИТЬ ЗАПРЕЩЕНО ПРАВИЛАМИ ФОРУМА. S>По сути объекты 1С++ схожи со структурами.
Не понял. S>Но виртуальность накладывает на обязательное поле
Какое поле? S>ссылки на VMT, S>в Delphi с отрицательным смещение хранится куча информации о типе , интерфейсах итд.
Я не копался в дельфе но что-то мне подсказавает что там лежит только указатель. Но если они в каждай объект запихали всю метоинформацию то... S>Кроме всего прочего вариантный подход, тоже требует определенных методов по преобразованию.
Какой подход? Ах да. Я же забыл что дельфя с типами не дружит. И временами под скрипт пытается косить. S>Я лично ну ни как не пойму какие проблемы у С++ с БД.
Я тоже. S> А как насчет InheritedForm,,,,
А как на чсет типизированых контейнеров, адаптивных алгоритмов, смартпоинтеров,... А ведь это нужно на много чаще чем RTTI.
WH>>НАФИГА? Создал в стеке пусть лежит в стеке, создал в хипе пусть будет в хипе. Нафига это разделение? S> Создал структуру как в Net и пусть себе лежит.
Почему один и тотже класс нельзя разместить в стеке, в хипе, как часть другого? S>Какие проблемы. Неотвечаешь на предыдущие вопросы.
Какие именно? Ссылки пожалуйста. S>Единственный аргумент Шаблоны. И все???
А что мало? Ах да. Я все время забываю что ты не имеешь представления о возможностях С++ шаблонов. S> Честно говоря, как оппонент Вы WolfHound, очень не интересны. А чтож тогда разговариваешь? S>Абсолютно нет никакого конструктивизма и анализа.
Что анализировать? Нетипизированые контейнеры или варианты в языке? Им самое место в библиотеке. S>Уперся рогом и все.
А ты чтоли нет? S>Но в Net Я нашел, то что искал и ищу.
Плюсы есть но и минусов не мало. Хотя после дельфей их не видно ибо не знаешь куда смотреть. S> С++ умрет, а Виртовский Паскаль останется. И это еще мне говорят что я рогом уперся S>И уже доказал свою состоятельнось, не взирая на свой возраст. Главное фундамент.
И чтоже в паскале такаго чего нет в С++? S> Если Ты в Москве готов в личном поединке обсудить общеязыковые проблемы за кружечкой Водки.
Я не в Москве и водку не пью.
... << RSDN@Home 1.1 beta 2 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Serginio1, Вы писали:
WH>>>А чем чисто абстрактный класс без данных отличается от интерфейса? S>> Чем ??? Посмотри на реализацию придуманную M$. WH>Еще раз: ФИЗИЧЕСКОЕ устройчтво меня не волнует. А ЛОГИЧЕСКИ это тоже самое. S>>Дла каждого объекта (не класса) генерятся в памяти функции заглушки, которые генерят вызов методов класса с передачей данных объекта (Self) в методы класса. WH>Ты сам понял что сказал?
Понял прекрасно. WH>На всякий случай скажу как дело обстоит на самом деле. WH>Для каждого класса(не объекта)компилятор генерирует таблицу виртуальных функций при вызове просто берем указатель из таблици и вывываем this передается через ECX.
Еще повнимательней посмотри окошечко CPU.
Посмотри внимательней на VTBL и поймешь обсурд для каждого объекта генерить функции заглушки. Прав. S>> Вот и поймешь в чем причина. Не прав.
S>> Гхы-Гхы. WolfHound хоть ты и RSDN но рассыждаешь как зеленоротый птенец. WH>НА ЛИЧНОСТИ ПЕРЕХОДИТЬ ЗАПРЕЩЕНО ПРАВИЛАМИ ФОРУМА.
Я действительно хочу выпить с Ним несколько кружечек Водки. В чем проблема???? S>>По сути объекты 1С++ схожи со структурами. WH>Не понял. S>>Но виртуальность накладывает на обязательное поле WH>Какое поле?
На VMT S>>ссылки на VMT, S>>в Delphi с отрицательным смещение хранится куча информации о типе , интерфейсах итд. WH>Я не копался в дельфе но что-то мне подсказавает что там лежит только указатель. Но если они в каждай объект запихали всю метоинформацию то...
Мой совет Покапайся. Очень интересно!!! В Net развито больше. S>>Кроме всего прочего вариантный подход, тоже требует определенных методов по преобразованию. WH>Какой подход? Ах да. Я же забыл что дельфя с типами не дружит. И временами под скрипт пытается косить.
Гхы-Гхы, больше нечего сказать. S>>Я лично ну ни как не пойму какие проблемы у С++ с БД. WH>Я тоже. S>> А как насчет InheritedForm,,,, WH>А как на чсет типизированых контейнеров, адаптивных алгоритмов, смартпоинтеров,... А ведь это нужно на много чаще чем RTTI.
Контейнеры только на этапе компиляции, а дальше...
Аналоги Сишных контейнеров (правда без типизации) делаются в легкую.
WH>>>НАФИГА? Создал в стеке пусть лежит в стеке, создал в хипе пусть будет в хипе. Нафига это разделение? S>> Создал структуру как в Net и пусть себе лежит. WH>Почему один и тотже класс нельзя разместить в стеке, в хипе, как часть другого?
Размещай. Только потом проблемы возникают. Ялично ни за что не агитирую.
Каждый делает выбор для себя. Оссобенно когда считают однин язык превалирующим над другими. В добрый пыть от чистого сердца.
S>>Какие проблемы. Неотвечаешь на предыдущие вопросы. WH>Какие именно? Ссылки пожалуйста.
Смотри предыдущий диалоги меня и WolfHound S>>Единственный аргумент Шаблоны. И все??? WH>А что мало? Ах да. Я все время забываю что ты не имеешь представления о возможностях С++ шаблонов.
Да как бы смотрю и нравятся, но для чего руки то даны (о голове молчу). S>> Честно говоря, как оппонент Вы WolfHound, очень не интересны. WH> А чтож тогда разговариваешь?
Не разговариваю, а нажимаю на клавиши. А поговорить действительно интересно. S>>Абсолютно нет никакого конструктивизма и анализа. WH>Что анализировать? Нетипизированые контейнеры или варианты в языке? Им самое место в библиотеке. S>>Уперся рогом и все. WH>А ты чтоли нет? S>>Но в Net Я нашел, то что искал и ищу. WH>Плюсы есть но и минусов не мало. Хотя после дельфей их не видно ибо не знаешь куда смотреть. S>> С++ умрет, а Виртовский Паскаль останется. WH> И это еще мне говорят что я рогом уперся S>>И уже доказал свою состоятельнось, не взирая на свой возраст. Главное фундамент. WH>И чтоже в паскале такаго чего нет в С++?
Посмотри и сравни с Net. Зачем толочь одно и тоже. S>> Если Ты в Москве готов в личном поединке обсудить общеязыковые проблемы за кружечкой Водки. WH>Я не в Москве и водку не пью.
Ну вот они какие Сишники. А у нас народный русский (Российский) напиток Водка.
Срочно нужно новый Язык изобретать МежНациональный.
И пойми если бы в С++ было то, что мне хотелось сразу перешел бы на него.
А вот Net действительно берет своей мощью. И если мои посты только в защиту Delphi, то твои претендуют на абсолютную истинность. Такая небольшая разница.
ПРошу простить меня Модератор. Пятница однако.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, mihailik, Вы писали:
M>>>Свойства WH>>О да это величайшая АРХИТЕКТУРНАЯ особенность. К стати VC++ поддерживает свойства в качестве расширения.
M>Свойства — это важная архитектурная особенность. Языки, в которых поддерживаются свойства являются компонент-ориентированными. Ну вот не могу сказать почему так выходит, а реальность такова.
Постойте-постойте!!! Как, в С++ нет свойств? Тех, что есть даже в самом распоследнем Дельфи? Да не может этого быть! Я просто не могу поверить...
Здравствуйте, akasoft, Вы писали:
A>Здравствуйте, mihailik, Вы писали:
M>>Короче, хотите программировать под Windows — читайте Страуструпа...
A>Пожалуйста, Страуструп случайно не Бьерн?
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, WolfHound, Вы писали:
WH>>Здравствуйте, Serginio1, Вы писали:
WH>>И чтоже в паскале такаго чего нет в С++? S> Посмотри и сравни с Net. Зачем толочь одно и тоже. S>>> Если Ты в Москве готов в личном поединке обсудить общеязыковые проблемы за кружечкой Водки. WH>>Я не в Москве и водку не пью. S> Ну вот они какие Сишники. А у нас народный русский (Российский) напиток Водка. S> Срочно нужно новый Язык изобретать МежНациональный. S> И пойми если бы в С++ было то, что мне хотелось сразу перешел бы на него. S> А вот Net действительно берет своей мощью. И если мои посты только в защиту Delphi, то твои претендуют на абсолютную истинность. Такая небольшая разница. S> ПРошу простить меня Модератор. Пятница однако.
"...Незнанае законов от ответсвенности не спасают..." (c) уголовное право
а тут просто надо руками пощупать, пописать на с++ с пол годика...
и поймеш круче языка еще не было...
А НЕТ не мощью берет, а тем что альтернативы ему нету... и мне слабо вериться что кто-то смогет макрософтов переплюнуть... задавят... делфи или помрет или вольеться в НЕТ как подмножество языков... что в принципе ничего не поменяет... и вот заметь с++ получил новое развитие в НЕТ... он так и остался стандартом для разработки топ перформанс апликаций... чего для Delphi на просторах макросовтовской оски небыло и не будет... делфи язык бизнес-апликаций, с++ язык системного уровня — но при этом он совершенно свободно может быть использован для наисания все-чего угодно...
Здравствуйте, akasoft, Вы писали:
A>Здравствуйте, mihailik, Вы писали:
M>>>>Свойства WH>>>О да это величайшая АРХИТЕКТУРНАЯ особенность. К стати VC++ поддерживает свойства в качестве расширения.
M>>Свойства — это важная архитектурная особенность. Языки, в которых поддерживаются свойства являются компонент-ориентированными. Ну вот не могу сказать почему так выходит, а реальность такова.
A>Постойте-постойте!!! Как, в С++ нет свойств? Тех, что есть даже в самом распоследнем Дельфи? Да не может этого быть! Я просто не могу поверить...
НЕту.. но при этом простым классов-шаблоном-врапером можно это сделать... полная гибкость!
вобще понятия проперти/ивентов появилось только когда придумали и внедрили COM... идея может и до этого в воздухе летала, но достойной реализации небыло до COM... если не очень ошибаюсь в библиотке boost есть наработка на эту тему — создание пропертей и создание ивентов. И заметьте язык позволяет достаточно легко выкрутиться и расшириться собственными средствами, что для Делфи почти не реально...
Здравствуйте, AlexK, Вы писали:
AK>НЕту.. но при этом простым классов-шаблоном-врапером можно это сделать... полная гибкость! AK>вобще понятия проперти/ивентов появилось только когда придумали и внедрили COM... идея может и до этого в воздухе летала, но достойной реализации небыло до COM... если не очень ошибаюсь в библиотке boost есть наработка на эту тему — создание пропертей и создание ивентов. И заметьте язык позволяет достаточно легко выкрутиться и расшириться собственными средствами
Только этими свойствами очень неудобно пользоваться. На rsdn даже есть статья посвященная реализации свойств на плюсах. Нормального так ничего и не придумали...
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Здравствуйте, AndrewJD, Вы писали:
AJD>Здравствуйте, AlexK, Вы писали:
AK>>НЕту.. но при этом простым классов-шаблоном-врапером можно это сделать... полная гибкость! AK>>вобще понятия проперти/ивентов появилось только когда придумали и внедрили COM... идея может и до этого в воздухе летала, но достойной реализации небыло до COM... если не очень ошибаюсь в библиотке boost есть наработка на эту тему — создание пропертей и создание ивентов. И заметьте язык позволяет достаточно легко выкрутиться и расшириться собственными средствами
AJD>Только этими свойствами очень неудобно пользоваться. На rsdn даже есть статья посвященная реализации свойств на плюсах. Нормального так ничего и не придумали...
Так лень думать стало — COM это все на себя перетянул...
Здравствуйте, AndrewJD, Вы писали:
AJD>Только этими свойствами очень неудобно пользоваться. На rsdn даже есть статья посвященная реализации свойств на плюсах. Нормального так ничего и не придумали...
Почему? Вполне нормально. Их еще пооптимизировать можно. Можно указатели на getter/setter-ы параметрами шаблона передавать. Тогда все, что нужно хранить в свойстве — адрес объемлющего класса. В принципе, его можно отсчитывать от объектв-свойства. Но вот как шаблонами/препроцессором получить смещение от объекта-свойства до объекта, его содержащего, я не знаю. Похоже, никак. Поскольку при компиляции полей класса определение класса еще не полно и смещения до поля-свойства не известно . Но это уже технические детали.
А насчет синтаксиса — тоже не очень навороченно, описание поля, да в конструкторе свойству адрес внешнего класса дать. И все. В C++ бывают ситуации с гораздо более тяжелым синтаксисом. Так что они не сильно-то и нужны.
Здравствуйте, mihailik, Вы писали:
M>Операторы, слава богу, не перегружаются.
Уже. Custom Variant Types начиная с 6 позволяют реализовать нечто похожее на перегрузку операторов.
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, AlexK, Вы писали:
M>>>>>Свойства WH>>>>О да это величайшая АРХИТЕКТУРНАЯ особенность. К стати VC++ поддерживает свойства в качестве расширения.
M>>>Свойства — это важная архитектурная особенность. Языки, в которых поддерживаются свойства являются компонент-ориентированными. Ну вот не могу сказать почему так выходит, а реальность такова.
AK>НЕту.. но при этом простым классов-шаблоном-врапером можно это сделать... полная гибкость! AK>вобще понятия проперти/ивентов появилось только когда придумали и внедрили COM...
Точно, точно! Особенно мне нравился СОМ под Win3.11. А под DOS еще больше
Здравствуйте, WFrag, Вы писали:
WF>Здравствуйте, AndrewJD, Вы писали:
AJD>>Только этими свойствами очень неудобно пользоваться. На rsdn даже есть статья посвященная реализации свойств на плюсах. Нормального так ничего и не придумали...
WF>Почему? Вполне нормально. Их еще пооптимизировать можно. Можно указатели на getter/setter-ы параметрами шаблона передавать. Тогда все, что нужно хранить в свойстве — адрес объемлющего класса. В принципе, его можно отсчитывать от объектв-свойства. Но вот как шаблонами/препроцессором получить смещение от объекта-свойства до объекта, его содержащего, я не знаю. Похоже, никак. Поскольку при компиляции полей класса определение класса еще не полно и смещения до поля-свойства не известно . Но это уже технические детали.
WF>А насчет синтаксиса — тоже не очень навороченно, описание поля, да в конструкторе свойству адрес внешнего класса дать. И все. В C++ бывают ситуации с гораздо более тяжелым синтаксисом. Так что они не сильно-то и нужны.
Вот именно. Нафига в С++ свойства? В Delphi они несут большую функциональную нагрузку, а в С++?
Здравствуйте, FWP, Вы писали:
FWP>Вот именно. Нафига в С++ свойства? В Delphi они несут большую функциональную нагрузку, а в С++?
Я считаю, что свойства лишь более удобный вариант записи get_something(), set_something() (если не заморачиваться с RTTI/Reflection-ом, все равно полноценного в C++ нет). И следовательно в C++ они не нужны, поскольку синтаксис это сильно не упростит (C++ все равно останется языком с очень тяжелым синтаксисом). В языках типа Дельфи, С# — да очень нужны, для более легкого понимания. В C++ — нет.
Здравствуйте, WFrag, Вы писали:
WF>Здравствуйте, FWP, Вы писали:
FWP>>Вот именно. Нафига в С++ свойства? В Delphi они несут большую функциональную нагрузку, а в С++?
WF>Я считаю, что свойства лишь более удобный вариант записи get_something(), set_something() (если не заморачиваться с RTTI/Reflection-ом, все равно полноценного в C++ нет). И следовательно в C++ они не нужны, поскольку синтаксис это сильно не упростит (C++ все равно останется языком с очень тяжелым синтаксисом). В языках типа Дельфи, С# — да очень нужны, для более легкого понимания. В C++ — нет.
Так и я про то же. Свойства — это атрибут компонентно-ориетированного языка. Компоненты в Delphi, а теперь и в C#?, позволяют затачивать IDE под себя. Т.е. в идеале программрование должно свестись к киданию компонент на форму и настройке их СВОЙСТВ. В действительности это, конечно, не так . А в С++ это просто дань моде.
На мой взгляд один из самых неприятных недостатков Delphi вытекает из этого его достоинства. Многие начинающие программисты умирают на уровне компонентокидательства. А потом считают, что этим Delphi и заканчивается. Так скоро начнут искать компоненты для поиска максимума в массиве. Кстати, STL косвенно тоже ведет к деградации программистского сообщества.
Конечно GENERIC PROGRAMMING позволяет облегчить некоторые проблемы. И введение его в Delphi и в C# не помешает. Но и не является такой панацеей какой ее пытается представить WH.
WF>А насчет синтаксиса — тоже не очень навороченно, описание поля, да в конструкторе свойству адрес внешнего класса дать. И все. В C++ бывают ситуации с гораздо более тяжелым синтаксисом. Так что они не сильно-то и нужны.
Бывают ситуации... Вот поэтому они никому нафиг не нужны. Зачем заморачиваться с свойствами, если они вместо облегчения жизни, делают ее еще сложнее...
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Здравствуйте, AndrewJD, Вы писали:
AJD> Бывают ситуации... Вот поэтому они никому нафиг не нужны. Зачем заморачиваться с свойствами, если они вместо облегчения жизни, делают ее еще сложнее...
Да нет, в использовании вне класса — как в C#. В использовани в классе — тоже ничего сложного. Просто не так логично, как в C#, не get/set, а два метода, переменная и в конструкторе немного буковок.
Здрасте...
Канэшна, на С# property понавороченнее, но мне хватает и того, что можно сделать на С++ за 3 минуты...
Конечно, имногда хотелось бы писать some_class.foo++, но, это не так часто бывает нужно...