Errores, fallos, preguntas - página 1736
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
si alguien está interesado, la respuesta de servicedesk:
Estoy muy interesado. Por favor, explique la respuesta del Service Desk con un ejemplo.
& == GetPointer(). * - nada ha cambiado.
Estoy muy interesado. Por favor, explique la respuesta del Service Desk con un ejemplo.
& == GetPointer(). * - nada ha cambiado.
si alguien está interesado, la respuesta es servicedesk:
Por cierto, el otro día les envié una propuesta sobre la introducción de punteros a cualquier tipo de datos. Y esta ridícula restricción ya es molesta.
sería bueno introducir la sobrecarga del operador *, porque sin ella no podemos realizar la identidad con STL, también sería bueno introducir typedef en su totalidad, no sólo en calback`i
¿Qué tipo de ejemplo quieres?
Lo que quieres de * y &. Algo sencillo pero ilustrativo. Para ver la conveniencia.
Lo que quiero ya lo he escrito más arriba.
Puedes inventarte un ejemplo con el operador '&' en el que uses GetPointer(...), es esencialmente una forma corta
El ejemplo con el operador '*' no sé si te ayuda a entenderlo:
{
int m_value;
public:
Iterator(const int val) : m_value(val) { }
int operator*() { return m_value; }
};
int main(int argc, char **argv) {
Iterator *_it = new Iterator(5);
int _val = **_it;
//---
return 0;
}
funciona en C++, pero en MQL tendrás que hacer un geter para obtener m_value.
Añadir a la ayuda que ChartRedraw(MainChartID) no es adecuado para redibujar OBJ_CHART. El ChartRedraw(ObjChartID) es necesario.
Por lo tanto, el ejemplo de la Ayuda es incorrecto.
Por favor, no limite la escala a N <= 5 (tamaño del área bajo la barra = 2^N).
Esto es necesario (y se ha convertido en algo conveniente) para poder mirar el historial de garrapatas con más detalle.
{
public:
const int a;
A( int c = 0 ) : a(c) {}
virtual int f()
{
Print(__FUNCTION__);
return(this.a);
}
};
class B : public A
{
public:
const int b;
B( int c = 0 ) : A(c), b(this.f()){}
virtual int f()
{
Print(__FUNCTION__);
return(this.a);
}
};
void OnStart()
{
B b;
A* a = new B;
delete a;
}
Resultado
2016.10.18 09:35:01.981 Test14 (GBPUSD,M1) B::f
¿Cuál es la razón de que salga B::F y no A::f? El script está escrito de tal manera que f es llamado ANTES de que se ejecute el cuerpo del constructor (en negrita). Pero en este punto el constructor de la clase base A ya ha sido llamado. Por eso this.f() parece referirse exactamente a la clase base antes de llamar al constructor B. Por favor, explique dónde está el error de razonamiento/previsión.