Erros, bugs, perguntas - página 1729

 
fxsaber:

Eu crio OBJ_CHART, e arrasto-o pelo canto superior esquerdo do gráfico com o meu rato. Enquanto se arrasta, o ObjectDelete é chamado com resultado bem sucedido. MT5.

Mais. Se eu arrastar OBJ_CHART e alterar as suas propriedades CHART (ChartNavigate, por exemplo), então não vejo a visualização correspondente.
 
Os comentários não relevantes para este tópico foram movidos para "Como determinar a que indicador pertence cada subjanela".
 
A100:

Erro de compilação:

Apareceu na construção 1447
Obrigado pelo posto, o controlo de constância do parâmetro passado foi corrigido.

Haverá agora um erro de compilação em ambos os casos, o código deve ser alterado para evitar o erro:
template<typename T>
void f1( const T* const & a[] ) {}    << добавлена константность ссылки
class A {};
void f2( const A* const & a[] ) {}    << добавлена константность ссылки
class B {
        void g1() const { f1( a ); } //error: 'f1' - cannot to apply function template
        void g2() const { f2( a ); } //нормально
        A *a[];
};
 
константность ссылки

Ainda não vi isso em lado nenhum. Será este o padrão?

 
Ilyas:
Agora em ambos os casos haverá um erro de compilação, a fim de evitar o erro, o código deve ser alterado:

Verifique também esta contradição (aqui ao lado - erro no fundo)

template<typename T>
void f1( const T& a[] ) {}
class A {};
void f2( const A& a[] ) {}
class B {
        void g1() const { f1( a ); } //нормально
        void g2() const { f2( a ); } //error: 'a' - parameter conversion not allowed
        A *a[];
};
 

Como funciona a MQL5 com a memória?

Por exemplo, existe o seguinte código:

class Alfa {}
class Beta
  {
private:
   Alfa  *ptr_a;
   Alfa   obj_a;
public:
   Beta(void) { ptr_a = new Alfa(); }
  ~Beta(void) { delete ptr_a; }
   Metod(void) {...}
  }
//---

int OnInit(void) {
   Beta *ptr_obj = new Beta();
   Beta obj;
//---
   return INIT_SUCCEEDED;
}
void OnDeinit(const int reason) {
   delete ptr_obj;
}

segundo o qual a memória em "pilha" será atribuída para o objecto ptr_obj, e a memória automática será atribuída para o objecto object. Se o funcionamento do gestor de memória MQL5 for claro para estes objectos:

1. o objectoptr_a do objectoptr_obj é atribuído à memória na "pilha".

2. Memória para o objectoobj_a do objectoobj é automaticamente atribuída

Como o gestor de memória MQL5 está organizado nestes casos:

3. na qual a área de memória irá obj_a do objecto ptr_obj será localizada

4. Em que área da memória será localizada a ptr_a do objecto objecto

 
A100:

Por favor, verifique também esta contradição (aqui ao contrário)

Isto está correcto, aqui com a dactilografia, T = A *
 
void f( const A* &Array[] );

Com esta transferência, é possível trocar os elementos da matriz (e tamanho), mas não é possível trocar os elementos em si. Certo?

void f( const A* const &Array[] );

E aqui os elementos (e o tamanho) também não podem ser trocados. É correcto?

 
fxsaber:

Ainda não vi isso em lado nenhum. Será este o padrão?

Escrito de forma a não escrever: deve haver uma referência a um conjunto constante de apontadores para objectos constantes
 
fxsaber:

Com esta transferência, é possível trocar os elementos da matriz (e tamanho), mas não é possível trocar os elementos em si. Certo?

E aqui os elementos (e o tamanho) também não podem ser trocados. É correcto?

Sim, isso é correcto.
Razão: