Erros, bugs, perguntas - página 1816

 
Mist13:

Encontrei (na minha opinião) um comportamento incorrecto dos indicadores de objectos.

Parece ser um erro de MQL.

O erro é seu. Como imagina atribuir um progenitor vazio a um descendente?

 
fxsaber:

Parece ser um erro de MQL.

O erro é seu. Como imagina atribuir um progenitor vazio a um descendente?

Exactamente o mesmo que uma não vazia. A baseObj1 contém um ponteiro para o objecto da classe descendente. Se remover o delete(obj1), a tarefa na última linha não causa quaisquer problemas - os tipos de ponteiro correspondem. Penso que a tarefa deve seguir o mesmo caminho se o objecto a que o ponteiro se refere for eliminado. E não deve certamente haver nenhum erro de "Invalid pointer access" - não há nenhuma tentativa de aceder a um objecto apagado.
 
Mist13:
Exactamente o mesmo que não vazia. Na baseObj1 há um ponteiro para um objecto de classe descendente. Se remover o delete(obj1), a tarefa na última linha não causa quaisquer problemas - os tipos de ponteiro correspondem. Penso que a tarefa deve seguir o mesmo caminho se o objecto a que o ponteiro se refere for eliminado. E não deve haver nenhum erro de "acesso ao ponteiro inválido", pois não há tentativa de acesso a um objecto eliminado.
Esta parte do seu código
obj2 = baseObj1;//Пока не грохнули объект - no problem
como, do seu ponto de vista, pode ser implementado arquitectonicamente?
 
       obj2 = dynamic_cast<B *>( baseObj1 );//нормально
Tal fundição, se de todo possível, só é possível se o objecto base existir.
 
E como posso carregar ficheiros para o mercado após a actualização?
 
fxsaber:
Aqui está esta parte do seu código.
obj2 = baseObj1;//Пока не грохнули объект - no problem
Como, do seu ponto de vista, pode ser feito de forma arquitectónica?

Aparentemente, é verificar se o tipo de objecto referenciado por baseObj1 corresponde ao tipo de ponteiro obj2. Há aqui duas possibilidades:

1) O próprio ponteiro pode ser uma estrutura complexa que contém o tipo de objecto

2) Precisamos de nos referir ao objecto para descobrir o seu tipo.

Este parece ser o caso #2, e teremos de viver com ele. Obrigado pelas principais questões )

 

Kaspersky tem estado a gritar com o terminal a tentar actualizar-se durante a última semana.

 
fxsaber:
Esta parte do seu código
obj2 = baseObj1;//Пока не грохнули объект - no problem
como, do seu ponto de vista, pode ser feito de forma arquitectónica?

O mesmo que aqui.

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:
Tal como aqui.
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 );
}
Onde?
b1 = a;
 
vladavd:

Kaspersky tem estado a gritar com o terminal a tentar actualizar-se durante a última semana.

não entrem em pânico!)

tudo claro, constrói 1545. incluindo kaspersky diz tudo 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...