Bonjour à tous
Je débute en C++. J'ai parcouru rapidement les post traitant de "const" mais il me reste un doute sur ma façon de programmer
Il m'arrive parfois d'écrire une fonction qui va traiter un truc. Pour l'exemple, on va dire "une chaîne". Donc ma fonction traite ma chaîne pour trouver qq chose et renvoie un pointeur sur l'endroit où se trouve ce qqchose (style "strstr" par exemple)
La fonction renvoyant un pointeur est déclarée "char*". De plus, la fonction ne modifiant pas la chaîne reçue ne paramètre, je déclare le paramètre "const char *", style
char *traitement (const char* chaine)
{
const char* pt; // Ptr de balayge de ma chaîne - L'élément pointé ne sera pas modifié donc "*pt" est déclaré "const"
pt=chaine;
<.... traitement long et complexe mais au final pt a la valeur qui m'intéresse ...>
return pt;
} |
Problème: Ma fonction est "char*" et non "const char*". Normal, elle me renvoie un truc qui lui, sera suceptible d'être modifié par l'appelant. Or, "pt" est un "const char*" le compilo râle.
Ok, je fais un cast => return (char*) pt
Question: Etant donné que généralement un cast traduit un problème de conception, ai-je mal conçu ma fonction ? Pourtant tout me parait cohérent. La fonction ne modifiant pas les éléments pointés, je les déclare en "const"...
J'espère avoir été clair.
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.