J'ai ceci:problème Recursion surcharge un opérateur
typedef string domanin_name;
Et puis, j'essaie de surcharger l'opérateur < ainsi:
bool operator<(const domain_name & left, const domain_name & right){
int pos_label_left = left.find_last_of('.');
int pos_label_right = right.find_last_of('.');
string label_left = left.substr(pos_label_left);
string label_right = right.substr(pos_label_right);
int last_pos_label_left=0, last_pos_label_right=0;
while(pos_label_left!=string::npos && pos_label_right!=string::npos){
if(label_left<label_right) return true;
else if(label_left>label_right) return false;
else{
last_pos_label_left = pos_label_left;
last_pos_label_right = pos_label_right;
pos_label_left = left.find_last_of('.', last_pos_label_left);
pos_label_right = right.find_last_of('.', last_pos_label_left);
label_left = left.substr(pos_label_left, last_pos_label_left);
label_right = right.substr(pos_label_right, last_pos_label_right);
}
}
}
Je sais que c'est une façon étrange de surcharger l'opérateur <, mais je dois le faire de cette façon. Ça devrait faire ce que je veux. Ce n'est pas le propos.
Le problème est qu'il entre dans une boucle infinie droite dans cette ligne:
if(label_left<label_right) return true;
Il semble que il essaie d'utiliser cette fonction de surcharge lui-même pour faire la comparaison, mais label_left est une chaîne , pas un nom de domaine!
Une suggestion?