2010-07-09 5 views
2

J'essaie d'utiliser des objets TextType Gtk pour soulever des tranches de trois caractères d'un TextBuffer, mais j'ai des problèmes avec l'arithmétique. J'ai mis en place un itérateur p pour pointer vers le début de la plage et je veux que q pointe vers trois caractères plus loin.Comment faire l'arithmétique Gtk TextIter

J'ai essayé ...

q = p + 3;    // Doesn't compile 
q = p; q += 3;   // Doesn't compile 
q = p; q++; q++; q++; // Happy 

Je voudrais savoir quoi faire de la bonne façon c'est. La troisième méthode fonctionne, mais ressemble à un hack horrible.

Des pensées?

Répondre

4

Si vous lisez le documentation, vous verrez que TextIter n'a pas d'opérateur + ou +=. C'est un itérateur bidirectionnel et non un itérateur à accès aléatoire, donc c'est comme il se doit.

Vous pouvez utiliser:

q = p; 
std::advance(q, 3); 

ou

q = p; 
q.forward_chars(3); 
+0

Merci, Staffan et détendez-vous. –

0

C'est bizarre.

L'API C sous-jacente a gtk_text_iter_forward_chars() qui devrait faire la bonne chose. Peut-être lire la source, et/ou déposer un bug sur le wrapper C++?

+0

FWIW, j'utilise GTK 2.20, g ++ 4.4.3 et Ubuntu 10.4. Je suis heureux d'entendre que ce n'est pas tout à fait ce que vous attendez; J'étais inquiet d'avoir complètement perdu l'intrigue. –