000
13.11.2015, 18:17 Uhr
~DarkDan
Gast
|
Hallo zusammen!
Ich habe folgende Klassenmemberfunktion, von der ich mir recht sicher bin, dass das Problem von ihr ausgeht. Es soll eine Textdatei eingelesen werden und jede Zeile als Bilanz-Objekt einem Company-Objekt zugeordnet werden und dieses dann wiederum in einem vector gespeichert werden (jede Firma soll nur einmal existieren). Eigentlich wollte ich lediglich einen Index von std::find() zurückbekommen, aber das war für mich mehr Arbeit als ich dachte... :/ Ich denke, der Fehler liegt hier, aber ich weiß nicht genau wieso. Ich habe diese Zeile analog zum Beispiel bei std::find() erstellt, nur dass es sich hier um ein Company-Objekt handelt und nicht um ein Integer:
C++: |
iter = std::find(m_companies.begin(), m_companies.end(), compCheck);
|
Hier die vollständige Funktion:
C++: |
void FileAdmin::loadCompanies(const string& path){ std::ifstream ifs(path); string token; vector<string> lines; //every line in file string line; //file's lines are read into a vector if (ifs.good()){ while (!ifs.eof()){ getline(ifs, line); lines.push_back(line); } } //every line will be another balance in a specific company for (unsigned int i = 0; i < lines.size(); i++){ vector<string> tokens; std::istringstream iss(lines[i]); //every line is split into its elements [name, date....] and temporarily put into tokens while (getline(iss, token, ';')){ tokens.push_back(token); } Company compCheck(tokens[0]); //company object to compare if it's already in the companies vector //check if there is no object like compCheck yet std::vector<Company>::iterator iter; iter = std::find(m_companies.begin(), m_companies.end(), compCheck); std::vector<Company>::iterator last = m_companies.end(); if (iter != m_companies.end()){ int index = std::distance(iter, last); //if company does exist, only add balance Date date(tokens[1]); Balance bal(date, stoi(tokens[2]), stoi(tokens[3]), stoi(tokens[4]), stoi(tokens[5])); m_companies[index].addBalance(bal); } else { //if company does not exist, create it and add line as balance Date date(tokens[1]); Balance bal(date, stoi(tokens[2]), stoi(tokens[3]), stoi(tokens[4]), stoi(tokens[5])); compCheck.addBalance(bal); m_companies.push_back(compCheck); } tokens.clear(); } }
|
Das ganze generiert allerlei Fehlermeldungen, darunter u.A.: -> C2678: binary '==' : no operator found which takes a left-hand operand of type 'Company' (or there is noc acceptable conversion) -> system_error(410) ...
Googeln hat mich da nicht weitergebracht, da ich keine Verbindung zu meinem Problem sehe, da ich keinen Operator verwende Ich hoffe, hier kann mir jemand helfen!
Liebe Grüße, Dan |