[gelöst] ambiguous overload for 'operator==' ...
-
Hallo,
nach einem Jahr pause hab ich mal wieder angefangen an einem Projekt zu arbeiten und bin wohl offensichtlich ziemlich eingerostet.
Ich arbeite mit Code::Blocks und wxwidgets/wxsqlite3 unter Windows 7. Mein Programm zeigt einen Loginscreen wo Username und PW eingegeben werden können, die eingabe soll dann mit der Datenbank abgeglichen werden.wxSQLite3Database* db = initDB(); wxSQLite3ResultSet user = db->ExecuteQuery(wxT("SELECT uname FROM users")); while (user.NextRow()) { wxString s = user.GetAsString(0); if (s == m_loginusername) { //TODO: Login erfolgt } else { //TODO: Login misslungen } } user.Finalize(); clearDB(db);
class SEAdminMain : public wxFrame { private: protected: wxTextCtrl* m_loginusername; . .
Und dabei bekomme ich folgende fehlermeldung(en)
E:\SEAdmin\SEAdmin\SEAdmin.cpp|19|error: ambiguous overload for 'operator==' in 's == ((SEAdminMain*)this)->SEAdminMain::m_loginusername'| E:\SourceCode\Libraries\wxWidgets2.8\include\wx\string.h|1561|note: candidates are: bool operator==(const wxString&, const wxString&) <near match>| . . .
Sicher seh ich nur den Wald vor Bäumen nicht, aber bitte, was muss ich ändern damit es funktioniert?
Danke schonmal
der Nala
-
Du vergleichst einen Zeiger mit einer Zeichenkette (wxString).
Was soll das bitte werden?
-
Naja, ein wxTextCtrl* ist halt mal kein wxString. Da kann der Compiler einfach nix finden.
Ein wxTextCtrl hat aber sicher eine Funktion "Value()" oder "Text()", die einem den aktuell enthaltenen Text als wxString zurück gibt. Den holen dann klappts auch mit dem Vergleich.
-
if (s == m_loginusername)
- da vergleichst du einen wxString mit einem wxTextCtrl* (bemerke den Pointer) und der Compiler weiß nicht wie ers anstellen soll. Vielleicht musst du m_loginusername erst noch dereferenzieren? Der Compiler sucht nach möglichen Konvertierungen der Argumente und findet unter anderem den op==(wcString const&, wxString const&) - vielleicht gibts einen passenden nicht-expliziten Ctor für wxString, so dass er den Pointer auf wxTextCtrl in ein wxString Konvertieren kann?
-
if (s == m_loginusername->GetValue())
... hat die Lösung gebracht .... Vielen Dank l'abra d'or