Errores, fallos, preguntas - página 1119

 

Error de compilación: el compilador cree que estoy pasando un puntero por referencia

class A {
};

void f1( A*  a ) {}
void f2( int a ) {}

void OnStart()
{
        A* const a1 = new A();
        f1( a1 ); // ошибка компиляции: constant variable cannot be as reference
        const int a2 = 1;
        f2( a2 ); //все нормально
}

Si escribo f1( A* const a ), todo compila bien, pero no escribo f2( const int a ) y en el caso de f2( int a ) el compilador lo hace bien


по сути
f1( A*  a ) отличается от f1( A* const  a )
тем же, чем
f2( int a ) отличается от f2( const int a )
entonces también debería haber un error en f2( a2 )
 
Lone_Irbis:

No quiero publicar aquí todo el código y el .set, pero puedo enviarlo a algún sitio.

Gracias. Intentemos reproducirlo. El código puede enviarse a servicedesk (después de todas las comprobaciones se garantizará su eliminación).
 

No se puede borrar un puntero A* constante

class A {
};

void OnStart()
{
        const A *a = new A;
        delete( a ); //ошибка компиляции: constant cannot be modified
}

A primera vista parece lógico - delete llama al destructor ~A(), y no puede ser const (***)

PERO entonces sería imposible en principio borrar el objeto del siguiente ejemplo

void f()
{
    const A a;
}

porque el destructor, que no puede ser const, sigue siendo llamado al salir de f() y por tanto la doctrina (***) no funciona

Además, el compilador de C++ no impide que se elimine( a ), aunque el argumento se declare como const A * (el destructor no puede declararse como const, porque se llama para cualquier objeto, incluso los no const)

 
ya no cuenta para los puestos(
 
GriFFon4ik:
ya no cuenta para los puestos(
Sí, ya no...
 
GriFFon4ik:
ya no cuenta para los puestos(
Lo que sea.
 
barabashkakvn:
Oh, bueno.
triste :-(
 

He comprobado el puesto y no ha aumentado. Tal vez haya alguna fórmula inteligente mejorada...

Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio

Interesante y con humor

newdigital, 2014.04.09 14:23

Deberían prohibirle pensar: ¡es ofensivo!

Las líneas se tejen en un poema,
El mar lame la tierra seca.
Los niños hacen caca en el orinal,
*Los adultos se cagan en el alma*

¿Qué ha pasado con la calificación?
 
newdigital:

He comprobado mi puesto aquí - no ha aumentado. Tal vez haya alguna fórmula inteligente mejorada...

¿Qué ha pasado con la calificación?
Está funcionando) pero no(
 
Se ha dejado de contar la valoración de los mensajes del foro (
Bugs , sitio web mql5.com , cerrado , iniciativa: 2014.04.09 14:07 , # 993171

Se ha dejado de contar la valoración de los mensajes del foro (



Grupo de apoyo2014.04.09 15:27
¿Qué te hizo pensar eso?
GriFFon4ik2014.04.09 17:38
Bueno, solía ser comentario escrito, la calificación de inmediato +1, pero ahora no hay "+1 inmediatamente"
Grupo de apoyo2014.04.09 17:38

Ahora las calificaciones se asignarán periódicamente, con un retraso