Давайте вместе разберем CObject ? - страница 5

 
George Merts:

Нет.

Один и тот же объект нельзя ставить в разные списки, потому, что связность списка определяется как раз цепочкой указателей Next-Previous в самих узлах списка. Если мы добавим узел в один список - то его указатели - будут указывать на узлы этого списка, но как только добавим этот же объект в другой список - его указатели будут переписаны в соответствии с этим новым списком, а информация о старом списке - потеряется.

FreeMode - это селектор метода удаления. Определяет, кто ведает удалением собственно самих объектов. То ли их будет удалять сам список, то ли пользователь.


Да, совершенно верно. Пардон, я не так понял предыдущее мнение...

 
Alexey Navoykov:
Ой да ладно, можно подумать во всём остальном нельзя наворотить сдуру )  Да и главное чего такого страшного наворотить то. Я понимаю если бы речь шла о прямом доступе к памяти и прочих небезопасных вещах,  а тут просто организация твоего кода - кого она волнует кроме тебя? )

Почему тогда в C# MS убрали множественное наследование? ))

 
Alexey Volchanskiy:

Почему тогда в C# MS убрали множественное наследование? ))

Всмысле убрали? Его там не было.

 
Alexey Volchanskiy:

Почему тогда в C# MS убрали множественное наследование? ))

Комбинатор:

Всмысле убрали? Его там не было.

Ну это если речь о классах.  А с интерфейсами то проблем нет, наследуй сколько хочешь.

Но я честно говоря не понимаю, зачем было запрещать для классов, если можно просто исключить применение в тех классах, где имеются конструкторы с параметрами - отсюда же растут корни всех проблем.

 
Alexey Navoykov:
Зря вы так. Без смартов приходится устраивать большие нагромождения кода в плане отслеживания перемещения указателей в различных контейнерах.  Видимо вы просто не очень активно используете это.
Да, во многих случаях конечно можно обойтись и без всего этого, если у нас все объекты создаются и уничтожаются в одном месте. Но порой требуется и более гибкий функционал.

Ну так все верно.

Смартпоинтеры нужны тогда, когда объекты сперва где-то создаются - потом куда-то передаются, причем, неоднократно, и потом еще и удаляются где-то. Ссобственно верно ты (давай на "ты") указал - смартпоинтеры лишние, когда объекты создаются и уничтожаются в одном месте.

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

Но это не значит, что смартпоинтеры - вобще не нужны. Нужны в определенных случаях.

 
Комбинатор:

Всмысле убрали? Его там не было.


Неправильно выразился. Да, не было изначально, я сравнивал с С++, все же синтаксис близок, а в плюсах множественное есть. То есть когда брали за основу С++, множественное в C# не включили.

 
Alexey Navoykov:

Ну это если речь о классах.  А с интерфейсами то проблем нет, наследуй сколько хочешь.

Но я честно говоря не понимаю, зачем было запрещать для классов, если можно просто исключить применение в тех классах, где имеются конструкторы с параметрами - отсюда же растут корни всех проблем.


Да, в интерфейсах можно, так как там нет реализации методов, они пустышки.

 

Можно разобрать вопрос еще подробнее?

В справке есть пример на эту тему:

Пользовательские типы - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5

но пример при компиляции выдает ошибки (беру код после слов "Полный исходный код программы .")

Может кто-то устранить эти ошибки так, чтобы можно было скомпилировать и пошагово проследить последовательность действий в режиме отладки?

Документация по MQL5: Основы языка / Типы данных / Пользовательские типы
Документация по MQL5: Основы языка / Типы данных / Пользовательские типы
  • www.mql5.com
Пользовательские типы - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Volchanskiy:

Да, в интерфейсах можно, так как там нет реализации методов, они пустышки.

Уже завезли. Встречайте https://habr.com/ru/post/499184/

Новые возможности интерфейсов в C# 8
Новые возможности интерфейсов в C# 8
  • habr.com
Для начала посмотрим на определение интерфейса у Эндрю Троелсена и Филиппа Джепикса: «Интерфейс представляет собой всего лишь именованный набор абстрактных членов. Абстрактные методы являются чистым протоколом, поскольку они не предоставляют свои стандартные реализации. Специфичные члены, определяемые интерфейсом, зависят от того, какое точно...
Причина обращения: