2016-05-30 9 views
-1

zu tun Ich weiß, es ist ziemlich Grundproblem, aber ich kann nicht herausfinden, was zu tun ist. Hier ist mein Code:Qt Kann nicht herausfinden, was mit Operanden Fehler

IpResolver::ResolvedInfo IpResolver::resolveIp(const QString &ip) 
{ 
     ResolvedInfo rI; 

if (_IpResolver.find(rI.ip) != _IpResolver.end()) 
    return _IpResolver[ip]; 

_IpResolver[ip] = QString(); 
actualResolve(ip); 

return rI.country; 
} 

Und es gibt zwei Fehler zu sagen: 1. kein Operator „=“ Spiele diese Operanden Operandentypen sind „IpResolver :: ResolvedInfo“ und QString 2. keine geeignete benutzer- Definierte Konvertierung von "QString" zu "IpResolver :: ResolvedInfo" existiert

+0

können Sie den Typ von '_IpResolver' angeben oder seine Deklaration anzeigen – Zaiborg

+1

Ihr Code macht nicht viel Sinn. Der Aufruf 'find' verwendet' rI', das standardmäßig aufgebaut ist und nicht 'ip' verwendet. Bitte überdenken Sie die ganze Methode. – Mat

+0

_IpResolver ist eine private Map, die in IpResolver.h deklariert wurde: std :: map _IpResolver; – filcitheking

Antwort

1

Wissen Sie, was eine Karte ist? Es speichert Elemente und greift mit Schlüsseln darauf zu. Die Syntax ist:

map[key] = item; 

Wenn Sie

_IpResolver[ip] = QString(); 

schreiben, ist es wie

Schreiben
map[key] = key; 

, die nicht viel Sinn hat, weil die Karte zur Zeit einige IpResolver::ResolvedInfo speichert, wie Sie es definiert und der Compiler erinnert sich an Sie.

Verwandte Themen