OLP. Problemi di applicazione - pagina 18

 
TheXpert:
Non sembra compilare.
Funziona :/ Prova. Naturalmente, ho descritto il progetto in modo schematico, ma il mio simile si compila bene.
 
Yedelkin:

La ricerca non funziona. Forse mi sto ripetendo, ma la domanda è: un oggetto di classe può distruggere se stesso? Cioè, prima otteniamo un riferimento dell'oggetto a se stesso nella classe oggetto usando la parola riservata this, poi applichiamo l'operatore di cancellazione al descrittore dell'oggetto corrispondente (puntatore).

Qualcosa come:

O è meglio/preferibile cancellare un oggetto "esternamente" piuttosto che "internamente"?

Mi sono anche chiesto questa domanda. Sono arrivato alla seguente conclusione: l'oggetto può cancellare se stesso (in modo indolore), ma bisogna ricordare che i dati dell'oggetto (variabili) non esisteranno più dopo, quindi nessuna chiamata a loro. Ma imho questo è un modo sporco, meglio da fuori. E se l'oggetto si cancella, può essere creato solo in new.
 
220Volt:
Mi sono anche interrogato su questo problema. La conclusione è la seguente: l'oggetto può cancellarsi (in modo indolore), ma dobbiamo ricordare che dopo questo i dati dell'oggetto (variabili) non esisteranno più, quindi nessuna chiamata a loro. Ma imho questo è un modo disordinato, meglio fuori.
Sì, lo uso da un anno ormai :) È molto comodo quando l'oggetto non serve più. Non capisco perché lo consideri un modo "sporco"?
 
Yedelkin:

Forse iniziare leggendo la documentazione del linguaggio con cui si intende lavorare, e vedere le definizioni usate per gli scopi di quel linguaggio di programmazione?

Con rispetto.

State pensando nella giusta direzione.

 

Questo codice non si compila

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

Questo perché manca il ; nella linea 7, mentre le linee 6 e 5 non ne hanno bisogno.

 
kazakov.v:

State pensando nella giusta direzione.

Mi sembra di capire che non leggi molto la documentazione della lingua :)
 
TheXpert:

Questo codice non si compila

Questo perché manca il ; nella linea 7, mentre le linee 6 e 5 non ne hanno bisogno.

Cioè i problemi inizieranno quando si crea l'oggetto classe? OK, grazie, ora controllo.
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5
 
TheXpert:
Non sembra compilare.
Compilerà (beh, non sono schizzinoso sui punti e virgola ;-) ).
 
marketeer:
Si compila (beh, non sono schizzinoso sui punti e virgola ;-) ).

Quindi l'interrogante ha esattamente il problema con loro.

In generale, sono tali sciocchezze...

 
TheXpert:

Questo codice non si compila

Questo perché manca il ; nella linea 7, mentre le linee 6 e 5 non ne hanno bisogno.

Strano, tutto si compila nel mio codice anche dopo le tue linee aggiuntive con OnTick(). Solo dopo la dichiarazione della classe CCC è necessario mettere un punto e virgola. Come hai scritto, - devi mettere un punto e virgola nella settima riga.