Bonsoir.
Je crois que le titre est suffisamment explicite pour ceux qui connaissent le principe de substitution de Liskov.
Je dispose d'une classe, et certaines caractéristiques particulières sont suffisamment intéressantes pour former une nouvelle (sous-)classe.
Comment faire cohabiter correctement ces deux classes, si possible en conservant d'une manière ou d'une autre le lien qui les unit, tout en respectant ce fameux principe ?
Appelons A la classe de départ, et B la classe qui représente le « cas particulier ».
Une solution consiste à en faire des classes sœurs.
Cela me paraît un bon compromis, mais si vous avez d'autres idées, je suis preneur.
Si vous pensez que c'est mauvais, je suis preneur aussi.
Dans certains cas, je me retrouve dans une situation légèrement plus subtile.
Si je pouvais le représenter pas des template, je ferai ainsi :
Comment puis-je faire cela proprement, si N et Args sont des données membres ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 template <unsigned int N, typename... Args> // length(Args) == N class A; typedef A<0> B;
Pour information, dans mon projet les instances ne sont pas construites directement (via des fabriques, par exemple).
Aucune instance générale ne peut donc être construite si elle était en fait particulière.
Partager