2010-07-24 5 views
2

en C Supposons que je possède les fonctionsC const/versions non-const de même fonction

type* func (type*); 
const type* func_const (const type*); 

tels qu'ils ont tous les deux exactement la même logique interne.

Existe-t-il un moyen de fusionner les deux dans une fonction, où si un type const est donné, il renvoie un type const; et si on lui donne un type non-const, il renvoie un type non-const? Sinon, quelle est une bonne façon de gérer cela? Définir un par rapport à l'autre par un casting explicite peut-être?

+0

pouvez-vous C++ à la place? – Anycorn

+0

non (fillllller) –

Répondre

10

Vous ne pouvez pas automatiser, mais vous pouvez certainement la logique dans un seul endroit:

const type* func_const (const type*) 
{ 
    /* actual implementation goes here */ 
} 

type* func (type* param) 
{ 
    /* just call the const function where the "meat" is */ 
    return (type*)func_const(param); 
} 
2

faire comme les fonctions de la bibliothèque standard C ne et prendre juste un argument const qualifié tout en retournant un non résultat -const-qualifié. (Voir strchr, strstr, etc.) C'est le plus pratique.

+1

Mais casse type-sécurité. –