Bogue de compilation avec le paramètre template = void* - page 20

 
pavlick_:

Lampe à boutons à travers g avec virtualité :

des exemples éculés.

Il ne s'agit pas d'un exemple de polymorphisme ni d'un exemple de modèle. C'est juste un exemple d'utilisation d'une variable bool et rien d'autre (à part une épaisse couche de huskies).

Il est impossible que les modèles puissent remplacer le polymorphisme.

 
Dmitry Fedoseev:

Les modèles ne peuvent en aucun cas remplacer le polymorphisme.

Où ai-je dit le contraire ? Le fait est que le polymorphisme tente de remplacer les modèles.

 
pavlick_:

Et où ai-je dit le contraire ? Le fait est que le polymorphisme tente de remplacer les modèles.

Vous essayez plutôt de remplacer l'approche normale de la POO par une béquille) Les modèles ne sont en fait nécessaires que pour les données stockées et dans certaines interfaces comme IComparable<T>.

Ils ne présentent pratiquement aucun avantage en termes de performances. Dans votre deuxième exemple, le compilateur incruste tout, car tout y est sans ambiguïté.

 
Alexey Navoykov:

Vous essayez plutôt de remplacer l'approche normale de la POO par une béquille) Les modèles ne sont en fait nécessaires que pour les données stockées et dans certaines interfaces comme IComparable<T>.

Ils ne présentent pratiquement aucun avantage en termes de performances. Dans votre deuxième exemple, le compilateur incruste tout, car tout y est sans ambiguïté.

Ce n'est pas mon exemple, c'est un exemple classique d'inversion de dépendance. Et ne vous en prenez pas à sa simplicité, il ne fait que démontrer une idée. Si j'écrivais une feuille de code, diriez-vous "oui, c'est différent" ?

Les modèles sont devenus une béquille, oui . . Très bien, je vais l'appeler un jour.

 
Au fait, pour en revenir à void*, je viens de réaliser que même dynamic_cast ne fonctionne pas (ne compile pas) avec lui en C++, ce qui est logique, car nous avons juste un pointeur impersonnel vers une zone mémoire. C'est pourquoi elle ne peut être lancée que de manière explicite. En conséquence, nous devons savoir avec certitude quel type se trouve là. C'est pourquoi void* en soi est inutile en C++. Tout est différent en MQL. Mais pour des raisons de compatibilité, nous devons éviter d'utiliser dynamic_cast et delete avec les pointeurs de type void*.