ООП. Вопросы применения - страница 18

 
TheXpert:
Вроде не скомпилится.
Всё проходит :/  Попробуйте. Я, конечно, схематично изложил конструкцию, но у меня аналогичная вполне себе компилируется.
 
Yedelkin:

Поиск не работает. Возможно, повторюсь, но вопрос такой: может ли объект класса уничтожить сам себя? Т.е. сначала в объекте класса получаем ссылку объекта на самого себя при помощи зарезервированного слова this, затем применяем к соответствующему описателю (указателю) объекта оператор delete.

Что-то типа:

 Или же лучше/предпочтительнее удалять объект  "внешним", а не "внутренним" способом?

Тоже интересовался таким вопросом. Для себя вывод сделал такой: объект может удалить сам себя (безболезненно), но нужно помнить, что после этого данные (переменные) объекта существовать не будут, поэтому никаких обращений к ним. Но имхо это грязный способ, лучше снаружи. И если объект удаляет сам себя, то он может быть создан только в через new.
 
220Volt:
Тоже интересовался таким вопросом. Для себя вывод сделал такой: объект может удалить сам себя (безболезненно), но нужно помнить, что после этого данные (переменные) объекта существовать не будут, поэтому никаких обращений к ним. Но имхо это грязный способ, лучше снаружи.
Да, уже год как пользуюсь :) Очень удобно, если объект больше не нужен. Не понял, почему расцениваете это как "грязный" способ?
 
Yedelkin:

Может, для начала почитать документацию по языку, с которым собираетесь работать, и посмотреть определения, используемые в целях данного языка программирования?

С уважением. 

В правильном направлении мыслите.

 

Вот такой код не компилится

class CCC
{
   public:
      datetime start;                      //Сохраняем время создания объекта класса ССС
      CCC(void) : start(TimeCurrent()) {};  //Функция TimeCurrent() указана без символа "точка с запятой"
     ~CCC(void)                      {}; 
}
  
void OnTick()
{
   CCC ccc;
}

Потому что не хватает ; в 7 строчке, а в 6 и 5 строчках ; нафиг не нужны.

 
kazakov.v:

В правильном направлении мыслите.

Да я так и понял, что документацию по языку Вы особо не читаете :)
 
TheXpert:

Вот такой код не компилится

Потому что не хватает ; в 7 строчке, а в 6 и 5 строчках ; нафиг не нужны.

Т.е. проблемы начнутся при создании объекта класса? ОК, спасибо, сейчас проверю.
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5
 
TheXpert:
Вроде не скомпилится.
Компилится (ну к точкам с запятым я не придираюсь ;-) ).
 
marketeer:
Компилится (ну к точкам с запятым я не придираюсь ;-) ).

Так у вопрошающего именно с ними и проблема.

А вообще это такие мелочи...

 
TheXpert:

Вот такой код не компилится

Потому что не хватает ; в 7 строчке, а в 6 и 5 строчках ; нафиг не нужны.

Странно, у меня всё компилируется даже после Ваших дополнительных строчек с OnTick(). Только после объявления класса ССС надо поставить точку с запятой. Как Вы и написали, - надо поставить в 7-ой строчке.