Erreurs, bugs, questions - page 2327

 
fxsaber:

Probablement en raison de cette conception correcte

n'a pas tenu compte de la vôtre.

C'est exactement la même construction incorrecte.
 
Alexey Navoykov:
C'est exactement la même construction incorrecte.

S'il y a un objet de classe dérivée derrière le pointeur vers la classe de base, c'est une construction merveilleuse.

 
fxsaber:

S'il y a un objet de classe dérivée derrière le pointeur vers la classe de base, c'est une excellente conception.

Je suggère que vous ne discutiez pas et que vous me croyiez simplement que c'est une erreur.
 
Alexey Navoykov:
Je suggère que vous ne discutiez pas, mais que vous me croyiez simplement que c'est une erreur.

Ce verbe est faiblement applicable dans un forum technique. J'ai essayé le C++.

class A {  };

class B : public A { };

A* a = new B;

B* b= dynamic_cast<B*>(a); // cannot dynamic_cast ‘a’ (of type ‘class A*’) to type ‘class B*’ (source type is not polymorphic)
B* b1= a; // invalid conversion from ‘A*’ to ‘B*’ [-fpermissive]

Aucune des options n'a fonctionné. Les raisons ne sont pas claires.

 
Koldun Zloy:

Si vous les rendez interchangeables, alors ils sont tous deux inutiles.

En C++, c'est possible :

J'ai suggéré la variante la plus simple qui pourrait être mise en œuvre demain (pas dans 10 ans) et qui aurait une ressemblance extérieure avec C++ (sinon pourquoi changer quoi que ce soit). De plus, si operator*() n'est pas et ne sera pas implémenté (il y avait des informations à ce sujet sur le forum), on ne voit pas pourquoi operator->() serait soudainement implémenté (ils sont du même ordre).

 
Alexey Navoykov:

Pourquoi MQL n'a-t-il pas corrigé le bogue qui fait qu'une classe de base est implicitement castée dans une classe dérivée ? Même pas un avertissement du compilateur!

Vous attendez une erreur de compilation ? Il ne devrait pas y en avoir, car dans ce cas, il s'agit de dynamic_cast.
 
TheXpert:
Vous attendez une erreur de compilation ? Il ne devrait pas y en avoir, car dans ce cas, il s'agit de dynamic_cast.
Voir ci-dessus, fxsaber a fourni le code C++.
 
Alexey Navoykov:
Voir ci-dessus, fxsaber a fourni le code C++.

compilé par

class A 
{ 
public:
    virtual ~A() = default; 
};

class B : public A { };

int main(void)
{
    A* a = new B;
    B* b= dynamic_cast<B*>(a);
    return 0;
}
 
TheXpert:

compilé par

Tu ne fais pas attention.
 
Alexey Navoykov:
Tu ne fais pas attention.

Ou vous. Allons droit au but.