Errores, fallos, preguntas - página 1816

 
Mist13:

He encontrado (en mi opinión) un comportamiento incorrecto de los punteros de los objetos.

Parece un error de MQL.

Tiene el error. ¿Cómo se imagina asignar un padre vacío a un descendiente?

 
fxsaber:

Parece un error de MQL.

Tiene el error. ¿Cómo se imagina asignar un padre vacío a un descendiente?

Exactamente igual que uno no vacío. El baseObj1 contiene un puntero al objeto de la clase descendiente. Si eliminas delete(obj1), la asignación en la última línea no causa ningún problema - los tipos de punteros coinciden. Creo que la asignación debe seguir el mismo camino si el objeto al que se refiere el puntero es eliminado. Y ciertamente no debería haber ningún error de "Acceso de puntero inválido" - no hay ningún intento de acceder a un objeto eliminado.
 
Mist13:
Exactamente igual que los no vacíos. En baseObj1 hay un puntero a un objeto de clase descendiente. Si eliminas delete(obj1), la asignación en la última línea no causa ningún problema - los tipos de punteros coinciden. Creo que la asignación debe seguir el mismo camino si el objeto al que se refiere el puntero es eliminado. Y no debe haber ningún error de "Acceso de puntero inválido" porque no se intenta acceder a un objeto eliminado.
Esta parte de su código
obj2 = baseObj1;//Пока не грохнули объект - no problem
¿cómo, desde su punto de vista, se puede implementar arquitectónicamente?
 
       obj2 = dynamic_cast<B *>( baseObj1 );//нормально
Esta fundición, si es posible, sólo es posible si el objeto base existe.
 
¿Y cómo subo los archivos al mercado después de la actualización?
 
fxsaber:
Aquí está esta parte de su código.
obj2 = baseObj1;//Пока не грохнули объект - no problem
Desde su punto de vista, ¿cómo se puede hacer arquitectónicamente?

Aparentemente, está comprobando si el tipo de objeto referenciado por baseObj1 coincide con el tipo del puntero obj2. Aquí hay dos posibilidades:

1) El propio puntero puede ser una estructura compleja que contenga el tipo del objeto

2) Tenemos que referirnos al objeto para conocer su tipo.

Este parece ser el caso #2, y tendremos que vivir con ello. Gracias por las preguntas dirigidas )

 

Kaspersky lleva una semana gritando en el terminal intentando actualizar.

 
fxsaber:
Esta parte de su código
obj2 = baseObj1;//Пока не грохнули объект - no problem
¿cómo, desde su punto de vista, se puede hacer arquitectónicamente?

Lo mismo que aquí.

class A {};
class B : public A {};
class C : public B {};
void OnStart()
{
        B *b = new B;
        delete b;
        B *c = b;
        b = new C;
        A *a = c;
        Print( a, ":", b, ":", c );
}
 
A100:
Como aquí.
class A {};
class B : public A {};
void OnStart()
{
        B *b1 = new B;
        A *a = b1;    
        delete b1;
        B *b2 = b1;
        b1 = new B; //уже другой объект
        a = b2;     //
        Print( a, ":", b1, ":", b2 );
}
¿Dónde?
b1 = a;
 
vladavd:

Kaspersky lleva una semana gritando en el terminal intentando actualizar.

no te asustes).

todo claro, build 1545. incluso kaspersky dice todo claro
https://www.virustotal.com/ru/file/2c3bf04666714cfac26e6e1c0fe355c6081554a0c2a15434849b0a5c241c95b0/analysis/1487685060/








Antivirus scan for 2c3bf04666714cfac26e6e1c0fe355c6081554a0c2a15434849b0a5c241c95b0 at 2017-02-21 13:51:00 UTC - VirusTotal
  • www.virustotal.com
Condensed report! The following is a condensed report of the behaviour of the file when executed in a controlled environment. The actions and events described were either performed by the file itself or by any other process launched by the executed file or subjected to code injection by the executed file. Opened files C:\Documents and...