OLP. Problemas de aplicación - página 18

 
TheXpert:
Parece que no compila.
Funciona :/ Pruébalo. Por supuesto, he descrito el diseño de forma esquemática, pero mi similar compila bien.
 
Yedelkin:

La búsqueda no funciona. Puede que me esté repitiendo, pero la pregunta es: ¿puede un objeto de clase destruirse a sí mismo? Es decir, primero obtenemos una referencia del objeto a sí mismo en la clase objeto utilizando la palabra reservada this, y luego aplicamos el operador de borrado al descriptor del objeto correspondiente (puntero).

Algo así como:

¿O es mejor/preferible eliminar un objeto "externamente" en lugar de "internamente"?

También me preguntaba sobre esta cuestión. Llegué a la siguiente conclusión: el objeto puede borrarse a sí mismo (sin dolor), pero hay que tener en cuenta que los datos del objeto (variables) no existirán después, por lo que no se podrá llamar a ellos. Pero en mi opinión es una forma sucia, mejor desde fuera. Y si el objeto se borra a sí mismo, sólo puede ser creado en new.
 
220Volt:
Yo también me preguntaba sobre este tema. La conclusión es la siguiente: el objeto puede borrarse a sí mismo (sin dolor), pero debemos recordar que después de eso los datos del objeto (variables) no existirán, por lo que no habrá llamadas a ellos. Pero, en mi opinión, esta es una manera desordenada, mejor fuera.
Sí, lo uso desde hace un año :) Muy práctico si el objeto ya no se necesita. No entiendo por qué lo consideras como una forma "sucia".
 
Yedelkin:

Tal vez, empiece por leer la documentación del lenguaje con el que pretende trabajar y ver las definiciones que se utilizan para los fines de ese lenguaje de programación.

Respetuosamente.

Estás pensando en la dirección correcta.

 

Este código no compila

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

Eso es porque falta el ; en la línea 7, mientras que las líneas 6 y 5 no lo necesitan.

 
kazakov.v:

Estás pensando en la dirección correcta.

Deduzco que no lees mucho la documentación del idioma :)
 
TheXpert:

Este código no compila

Eso es porque falta el ; en la línea 7, mientras que las líneas 6 y 5 no lo necesitan.

Es decir, ¿el problema comenzará al crear un objeto de clase? Bien, gracias, lo comprobaré ahora.
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5
 
TheXpert:
Parece que no compila.
Compilará (bueno, no soy exigente con los puntos y comas ;-) ).
 
marketeer:
Se compila (bueno, no soy exigente con el punto y coma ;-) ).

Así que el que pregunta tiene exactamente el problema con ellos.

En general, son nimiedades...

 
TheXpert:

Este código no compila

Eso es porque falta el ; en la línea 7, mientras que las líneas 6 y 5 no lo necesitan.

Extraño, todo compila en mi código incluso después de tus líneas adicionales con OnTick(). Sólo después de la declaración de la clase CCC hay que poner un punto y coma. Como has escrito, - tienes que poner un punto y coma en la 7ª línea.
Razón de la queja: