Según la ayuda,"es posible crear dinámicamente objetos de tipo complejo. El operador new no se utiliza aquí. Por favor, explique con más detalle cómo y en qué casos se puede utilizar el signo "*".
No habrá ninguna diferencia, sólo se trata del estilo de diseño y de un pequeño enfoque ideológico.
Es decir
CListItem *next(){return(next);}
esto es una declaración de un puntero al objeto (¿o método?) next()? Y luego, entre llaves, se devuelve el propio objeto next? ¿Lo he entendido bien?
Entiendo que todo debería ser muy sencillo, pero como no me he topado con la programación orientada a objetos antes, estoy vagando en 3 pinos. Por favor, hazme entender.
kogriv: Y luego, entre llaves, se devuelve el objeto siguiente? ¿Lo he entendido bien?
El cuerpo de la función se da entre llaves,
{return(next);}
significa que la función devolverá la variable next, que tiene el tipo de un puntero a un objeto de la clase CListItem. En general, esto coincide con el tipo de la función.
Justo después del primer ejemplo, el artículo contiene la frase "La variable pstatus es un puntero de un objeto, pero "olvidamos" deliberadamente crear el propio objeto utilizando el operador new y lo pasamos como parámetro a la función PrintStatus()".
1. No está claro qué pasaste "exactamente": ¿un puntero o un objeto?
2. No hay ninguna función PrintStatus() en el ejemplo.
//+------------------------------------------------------------------+//| añadir un elemento a la lista|//+------------------------------------------------------------------+
CList::addItem(CListItem *item)
{
//--- primero comprueba si el puntero pasado es correctoif(CheckPointer(item)==POINTER_INVALID) return;
//--- aumenta el número de elementos de la lista
m_counter++;
//--- si aún no hay elementos en la listaif(CheckPointer(first)!=POINTER_DYNAMIC)
{
first=item;
}
else
{
//--- fijar item al puntero del objeto anterior----------------------- Inicio del error-----------------------
item.prev(first);
//--- recuerda el puntero del primer elemento actual
CListItem *p=first;
//--- poner el elemento entrante en lugar del primer elemento
first=item;
//--- establece el puntero del siguiente objeto para el primer elemento de la lista
first.next(p);
}
}
Parece que el nuevo elemento de la lista tiene prev y first referenciando al segundo elemento, y el segundo elemento no obtiene una referencia al primer elemento.
Justo después del primer ejemplo, el artículo contiene la frase "La variable pstatus es un puntero a un objeto, pero "olvidamos" deliberadamente crear el propio objeto con el operador new y lo pasamos como parámetro a la función PrintStatus()".
1. No está claro qué se pasó exactamente: ¿un puntero o un objeto?
2. No hay función PrintStatus() en el ejemplo.
Más vale tarde que nunca. Gracias, arreglado en el artículo. Se ha eliminado el final de la frase
Justo después del primer ejemplo, el artículo contiene la frase "La variable pstatus es un puntero de un objeto, pero "olvidamos" deliberadamente crear el propio objeto utilizando el operador new y lo pasamos como parámetro a la función PrintStatus()".
Parece que el nuevo elemento de la lista tiene prev y first referenciando al segundo elemento, y el segundo elemento no obtiene una referencia al primer elemento.
Sí, hay un error tipográfico. En lugar de
else
{
//--- set item указатель предыдущего объекта item.prev(first);
debería
else
{
//--- set for first указатель предыдущего объектаfirst.prev(item);
Todavía no entiendo acerca de los punteros y referencias en MQL5 y ahora en MQL4. ¿Cuál es la diferencia entre pasar por referencia y puntero a excepción de código extra? Hay una diferencia en C ++, pero ¿qué es aquí? Si no es difícil, por favor escriba información más detallada.
Buenas tardes. Soy principiante. Tengo una duda sobre el uso del icono "*" (asterisco).
En el archivo samplelist
"*" se utiliza para declarar un puntero a un objeto - esto está bastante claro.
A continuación:
No está claro para qué se utiliza el signo "*".
Según la ayuda,"es posible crear dinámicamente objetos de tipo complejo. El operador new no se utiliza aquí. Por favor, explique con más detalle cómo y en qué casos se puede utilizar el signo "*".
Además, sin embargo:
No está claro qué significa el signo "*" colocado ahí.
Se puede escribir así
No habrá ninguna diferencia, sólo afecta al estilo del diseño y a un pequeño enfoque ideológico.
Puede escribirlo así
No habrá ninguna diferencia, sólo se trata del estilo de diseño y de un pequeño enfoque ideológico.
Es decir
CListItem *next(){return(next);}esto es una declaración de un puntero al objeto (¿o método?) next()? Y luego, entre llaves, se devuelve el propio objeto next? ¿Lo he entendido bien?
Entiendo que todo debería ser muy sencillo, pero como no me he topado con la programación orientada a objetos antes, estoy vagando en 3 pinos. Por favor, hazme entender.
Es decir.
¿es una declaración de un puntero al objeto (¿o método?) next()?
Y luego, entre llaves, se devuelve el objeto siguiente? ¿Lo he entendido bien?
El cuerpo de la función se da entre llaves,
{return(next);}significa que la función devolverá la variable next, que tiene el tipo de un puntero a un objeto de la clase CListItem. En general, esto coincide con el tipo de la función.
Justo después del primer ejemplo, el artículo contiene la frase "La variable pstatus es un puntero de un objeto, pero "olvidamos" deliberadamente crear el propio objeto utilizando el operador new y lo pasamos como parámetro a la función PrintStatus()".
1. No está claro qué pasaste "exactamente": ¿un puntero o un objeto?
2. No hay ninguna función PrintStatus() en el ejemplo.
Creo que hay un error:
Parece que el nuevo elemento de la lista tiene prev y first referenciando al segundo elemento, y el segundo elemento no obtiene una referencia al primer elemento.Justo después del primer ejemplo, el artículo contiene la frase "La variable pstatus es un puntero a un objeto, pero "olvidamos" deliberadamente crear el propio objeto con el operador new y lo pasamos como parámetro a la función PrintStatus()".
1. No está claro qué se pasó exactamente: ¿un puntero o un objeto?
2. No hay función PrintStatus() en el ejemplo.
Más vale tarde que nunca. Gracias, arreglado en el artículo. Se ha eliminado el final de la frase
Justo después del primer ejemplo, el artículo contiene la frase "La variable pstatus es un puntero de un objeto, pero "olvidamos" deliberadamente crear el propio objeto utilizando el operador new y lo pasamos como parámetro a la función PrintStatus()".
Creo que hay un error:
Parece que el nuevo elemento de la lista tiene prev y first referenciando al segundo elemento, y el segundo elemento no obtiene una referencia al primer elemento.Sí, hay un error tipográfico. En lugar de
debería
corregido.Todavía no entiendo acerca de los punteros y referencias en MQL5 y ahora en MQL4. ¿Cuál es la diferencia entre pasar por referencia y puntero a excepción de código extra? Hay una diferencia en C ++, pero ¿qué es aquí? Si no es difícil, por favor escriba información más detallada.