Por favor, dé un ejemplo del uso de esta construcción.
Por favor, dé un ejemplo de cómo utilizar esta construcción.
El ejemplo más trivial es el de una clase array, que en este caso se utiliza para almacenar cualquier puntero:
template<typename T> class CArray { T _data[]; public: T operator[](int i) const { return _data[i]; } int Size() const { return ArraySize(_data); } // и т.д. }; СArray<void*> pointers;
El ejemplo más trivial es la clase array. En este caso se utiliza para almacenar cualquier puntero.
¿Cómo utilizarlo entonces?
class A { public: void OnInit() { Print(__FUNCSIG__); } }; class B { public: void OnInit() { Print(__FUNCSIG__); } }; void OnStart() { void* Pointers[2]; A a; B b; Pointers[0] = &a; Pointers[1] = &b; for (int i = 0; i < ArraySize(Pointers); i++) Pointers[i].OnInit(); // 'OnInit' - member function not defined }
Cast al tipo que pusiste originalmente (o comprueba a través de dynamic_cast).
// (A*)Pointers[i].OnInit(); ((A*)Pointers[i]).OnInit();
Esto es sólo sobre el tema de si los paréntesis son necesarios/no necesarios... Con este casting sería un coñazo en el script de arriba cuando se ejecute. Es decir, necesitas conocer los nombres de las clases a las que se refieren los elementos del puntero del array.
No veo cuál es la conveniencia entonces.
MQ sólo utiliza void* en un lugar.
typedef string(*DoubleToStringFunction)(double,void*);
MQ sólo utiliza void* en un lugar.
Debido a que tienen todo construido en CObject, hace que sea imposible utilizar sus contenedores para sus propias clases e interfaces, no heredadas de su clase. Es decir, no es una solución universal.
Esto es probablemente debido al hecho de que en el momento de la creación de su biblioteca no había void* en MQL todavía. Pero por otro lado su objeto en sí mismo también participa en algunas manipulaciones (cambiando los valores de los punteros en él), que en sí mismo es simplemente salvaje.
Esto hace que sea imposible utilizar sus contenedores para sus propias clases e interfaces no heredadas de su clase, es decir, no es una solución universal.
Tal vez esto se deba a que en el momento en que se creó su biblioteca, aún no existía void* en MQL.
Por desgracia, no he visto ningún ejemplo de su uso.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Error de compilación. Bild 1961, 64 bits.