2014-06-05 17 views
6

İki öğrenciyiz ve şimdi çözemeyeceğimiz epik bir problemimiz var. Öğretmenimize biraz yardım istedik ama yardım edemedik, bu yüzden son şansımız bu forum!İkinci harita yineleyicisine nasıl erişilir?

Bir proje yapıyoruz: NPI dosyalarının bir komut yorumlayıcısı.

map<string,void(Interpreteur::*)()>::iterator trouve = interpreteur.myMap.find(saisie); 
if(trouve == interpreteur.myMap.end()) 
    cerr<<"command not found"<<endl; 
else 
    (trouve->*second)(); 

"map" adlı nesneyi kullanmalıyız, ancak ikinci parametreyi alamıyoruz, "..". Niye ya? Biz de çalıştık

'second' was not declared in this scope.

:

map<string,void(Interpreteur::*)()>::iterator trouve = interpreteur.myMap.find(saisie); 
if(trouve == interpreteur.myMap.end()) 
    cerr<<"command not found"<<endl; 
else 
    (trouve.second)(); 

Ve kod blokları cevap verdi:

error: 'std::map, void (Interpreteur::*)()>::iterator' has no member named 'second'

Eğer Kod Blokları hata burada, "başka" olduğunu hatadır anlattı Birisi bize yardım edebilir, projemizi kurtaracak, yarın için bitirmeliyiz .. Çok minnettar olacağız.

herhangi :) bir çift

cevap

5

A std::map yineleyici noktaları varsa biz sorulara cevap verebilir, yardım için çok teşekkür ederim. Yani Paritenin ikinci eleman erişmek için şunu yapın: sizin durumda, ikinci elemanın türü "Interpreteur üyesi işlevine işaretçi," öyle çağırmak için, bir sağlamanız gerekir olduğunu

trouve->second 

Not Interpreteur nesnesi. Bunun gibi bir şey:

(interpreteur.*(trouve->second))()