OLP. Questões de aplicação - página 18

 
TheXpert:
Não parece compilar.
Funciona :/ Experimente. Claro, descrevi o desenho esquematicamente, mas o meu semelhante compila bem.
 
Yedelkin:

A busca não funciona. Posso estar a repetir-me, mas a questão é: um objecto de classe pode destruir-se a si próprio? Isto é, primeiro obtemos uma referência do objecto a si próprio no objecto de classe usando a palavra reservada isto, depois aplicamos o operador de eliminação ao descritor de objecto correspondente (ponteiro).

Algo do género:

Ou é melhor/preferível apagar um objecto "externamente" em vez de "internamente"?

Também me interroguei sobre esta questão. Cheguei à seguinte conclusão: o objecto pode apagar-se a si próprio (sem dor), mas é preciso lembrar que os dados do objecto (variáveis) não existirão depois disso, pelo que não haverá chamadas para eles. Mas imho esta é uma forma suja, melhor do que a de fora. E se o objecto se apagar a si próprio, só pode ser criado em novo.
 
220Volt:
Também me interroguei sobre esta questão. A conclusão é a seguinte: o objecto pode apagar-se a si próprio (sem dor), mas devemos lembrar que depois disso os dados do objecto (variáveis) não existirão, pelo que não haverá chamadas para eles. Mas imho esta é uma forma confusa, melhor fora.
Sim, já o uso há um ano :) Muito útil se o objecto já não for necessário. Não percebo porque o considera uma forma "suja"?
 
Yedelkin:

Talvez começar por ler a documentação para a linguagem com que pretende trabalhar, e ver as definições utilizadas para os fins dessa linguagem de programação?

Com todo o respeito.

Está a pensar na direcção certa.

 

Este código não compila

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

Isto porque o ; na linha 7 está em falta, enquanto que as linhas 6 e 5 não precisam dele.

 
kazakov.v:

Está a pensar na direcção certa.

Presumo que não leiam muito a documentação linguística :)
 
TheXpert:

Este código não compila

Isto porque o ; na linha 7 está em falta, enquanto que as linhas 6 e 5 não precisam dele.

Isto é, o problema vai começar quando se cria um objecto de classe? OK, obrigado, vou verificar isso agora.
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5
 
TheXpert:
Não parece compilar.
Compilará (bem, não sou exigente quanto a ponto-e-vírgula ;-) ).
 
marketeer:
Compila (bem, não sou picuinhas com os ponto e vírgula ;-) ).

Portanto, o autor da pergunta tem exactamente o problema com eles.

Em geral, é tão insignificante...

 
TheXpert:

Este código não compila

Isto porque o ; na linha 7 está em falta, enquanto que as linhas 6 e 5 não precisam dele.

Estranho, tudo se compila no meu código mesmo depois das suas linhas adicionais com OnTick(). Só após a declaração da classe CCC é necessário colocar um ponto-e-vírgula. Como escreveu, - precisa de colocar um ponto-e-vírgula na 7ª linha.