Approche commune est de définir la structure avec des pointeurs de fonctions. Ceci définit les "méthodes" qui peut être appelé à n'importe quel type. Sous-types, puis de définir leurs propres fonctions dans cette structure commune, et de le retourner.
Par exemple, dans le noyau linux, il est struct:
struct inode_operations {
int (*create) (struct inode *,struct dentry *,int, struct nameidata *);
struct dentry * (*lookup) (struct inode *,struct dentry *,
struct nameidata *);
...
};
Chaque enregistré type de système de fichiers enregistre alors ses propres fonctions pour create
, lookup
, et d'autres fonctions. Reste du code peut que l'utilisation de générique inode_operations:
struct inode_operations *i_op;
i_op -> create(...);