Давайте вместе разберем 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
Для начала посмотрим на определение интерфейса у Эндрю Троелсена и Филиппа Джепикса: «Интерфейс представляет собой всего лишь именованный набор абстрактных членов. Абстрактные методы являются чистым протоколом, поскольку они не предоставляют свои стандартные реализации. Специфичные члены, определяемые интерфейсом, зависят от того, какое точно...