Ошибки, баги, вопросы - страница 1816

 
Mist13:

Столкнулся с некорректным (на мой взгляд) поведением указателей на объекты.

Выглядит, как ошибка MQL.

Ошибка у Вас. Как Вы себе представляется присваивание потомку пустого родителя?

 
fxsaber:

Выглядит, как ошибка MQL.

Ошибка у Вас. Как Вы себе представляется присваивание потомку пустого родителя?

Точно так же, как непустого. В baseObj1 лежит указатель на объект класса-потомка. Если убрать delete(obj1), присваивание в последней строке никаких проблем не вызывает - типы указателей соответствуют. Думаю, аналогично должно проходить присваивание, если объект, на который ссылается указатель, удалён. И уж точно не должно быть ошибки "Invalid pointer access" - нет ведь попытки доступа к удалённому объекту.
 
Mist13:
Точно так же, как непустого. В baseObj1 лежит указатель на объект класса-потомка. Если убрать delete(obj1), присваивание в последней строке никаких проблем не вызывает - типы указателей соответствуют. Думаю, аналогично должно проходить присваивание, если объект, на который ссылается указатель, удалён. И уж точно не должно быть ошибки "Invalid pointer access" - нет ведь попытки доступа к удалённому объекту.
Вот эта часть Вашего кода
obj2 = baseObj1;//Пока не грохнули объект - no problem
как, с Вашей точки зрения, может быть выполнена архитектурно?
 
       obj2 = dynamic_cast<B *>( baseObj1 );//нормально
Такой кастинг если и возможен, то только в случае, если базовый объект существует.
 
И как после обновления загружать файлы на маркет?
 
fxsaber:
Вот эта часть Вашего кода
obj2 = baseObj1;//Пока не грохнули объект - no problem
как, с Вашей точки зрения, может быть выполнена архитектурно?

Видимо, срабатывает проверка соответствия типа объекта, на который ссылается baseObj1, типу указателя obj2. Тут два варианта:

1) Сам указатель может быть сложной структурой, в которой содержится тип объекта

2) Обращаемся к объекту, чтобы выяснить тип.

Кажется, у нас случай № 2, и с этим придётся жить. Спасибо за наводящие вопросы )

 

Касперский последнюю неделю орет на пытающийся обновиться терминал.

 

 
fxsaber:
Вот эта часть Вашего кода
obj2 = baseObj1;//Пока не грохнули объект - no problem
как, с Вашей точки зрения, может быть выполнена архитектурно?

Так же как и здесь

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:
Так же как и здесь
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 );
}
А где?
b1 = a;
 
vladavd:

Касперский последнюю неделю орет на пытающийся обновиться терминал.

 

без паники!))

все чисто,build 1545. в том числе кашпировский говорит-все чисто
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...
Причина обращения: