Erreurs, bugs, questions - page 1816

 
fxsaber:

Cela ressemble à une erreur MQL.

Vous avez l'erreur. Comment imaginez-vous attribuer un parent vide à un descendant ?

C'est exactement la même chose que pour un non-vide. La baseObj1 contient un pointeur vers l'objet de la classe descendante. Si vous supprimez delete(obj1), l'affectation de la dernière ligne ne pose aucun problème - les types de pointeurs correspondent. Je pense que l'affectation doit se faire de la même manière si l'objet auquel le pointeur se réfère est supprimé. Et il ne devrait certainement pas y avoir d'erreur "Invalid pointer access" - il n'y a pas de tentative d'accès à un objet supprimé.
 
Mist13:
Exactement la même chose que non-vide. Dans baseObj1 il y a un pointeur vers un objet de la classe descendante. Si vous supprimez delete(obj1), l'affectation de la dernière ligne ne pose aucun problème - les types de pointeurs correspondent. Je pense que l'affectation doit se faire de la même manière si l'objet auquel le pointeur se réfère est supprimé. Et il ne doit pas y avoir d'erreur "Invalid pointer access" car il n'y a pas de tentative d'accès à un objet supprimé.
Cette partie de votre code
obj2 = baseObj1;//Пока не грохнули объект - no problem
comment, de votre point de vue, peut-il être mis en œuvre sur le plan architectural ?
 
       obj2 = dynamic_cast<B *>( baseObj1 );//нормально
Un tel moulage, si tant est qu'il soit possible, n'est possible que si l'objet de base existe.
 
Et comment télécharger des fichiers sur le marché après la mise à jour ?
 
fxsaber:
Voici cette partie de votre code.
obj2 = baseObj1;//Пока не грохнули объект - no problem
Comment, de votre point de vue, cela peut-il se faire sur le plan architectural ?

Apparemment, il vérifie si le type d'objet référencé par baseObj1 correspond au type du pointeur obj2. Il y a deux possibilités ici :

1) Le pointeur lui-même peut être une structure complexe qui contient le type de l'objet.

2) Nous devons nous référer à l'objet pour connaître son type.

Cela semble être le cas n°2, et nous devrons vivre avec. Merci pour les questions pertinentes)

 

Kaspersky hurle sur le terminal en essayant de se mettre à jour depuis une semaine.

 
fxsaber:
Cette partie de votre code
obj2 = baseObj1;//Пока не грохнули объект - no problem
comment, de votre point de vue, cela peut-il être fait sur le plan architectural ?

La même chose qu'ici.

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:
Comme ici.
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 );
}
Où ?
b1 = a;
 
vladavd:

Kaspersky hurle sur le terminal en essayant de se mettre à jour depuis une semaine.

ne paniquez pas !)

tout est clair, build 1545. y compris kaspersky dit tout est clair
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...
 
A100:
La question portait sur la conversion d'un pointeur dérivé distant en un pointeur de base. A est la base, B est la dérivée. J'ai ajouté C et supprimé les indices pour éviter toute confusion.
La question portait sur l'inverse de cette conversion.
Raison: