Fehler: Operator '>>'???



  • Hi,
    ich bin dabei eine MFC- Anwendung zu entwickln fürs Schreiben bzw. Lesen aus Dateien. Leider kann den unten beschriebenen Fehler nicht beseitigen. Könnte mir hier Jemend behilflich sein 😕

    Die implementierte Funktion lautet:

    void CPerson::Serialize(CArchive &ar)
    {
    	// Funktion der basisklasse aufrufen
    	CObject::Serialize(ar);
    	//Wird geschrieben?
    	if (ar.IsStoring())
    	{
    	//Alle Variablen in der richtigen Reihenfolge schreiben
    		ar << m_sName << m_iAge << m_iMaritalStatus << m_bEmployed;
    	} else
    	//Alle variablen in der richtigen Reihenfolge aus dem Archiv lesen
    		ar >> m_sName >> m_iAge >> m_iMaritalStatus >> m_bEmployed;
    
    }
    

    Der Fehler lautet:
    error C2679: Binaerer Operator '>>' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'bool' akzeptiert (oder keine geeignete Konvertierung moeglich)
    Fehler beim Ausführen von cl.exe.

    Vieln Dank im Voraus 😉



  • CArchive überlädt die IO-Operatoren zwar für einige Datentypen, aber zufälligerweise ist 'bool' nicht dabei.

    Für die Ausgabe ist das kein Problem - der bool-Wert wird in einen int umgewandelt und der kann ausgegeben werden. Bei der Eingabe geht das jedoch nicht, da brauchst du eine Hilfsvariable:

    void CPerson::Serialize(CArchive &ar)
    {
        // Funktion der basisklasse aufrufen
        CObject::Serialize(ar);
        //Wird geschrieben?
        if (ar.IsStoring())
        {
        //Alle Variablen in der richtigen Reihenfolge schreiben
            ar << m_sName << m_iAge << m_iMaritalStatus << m_bEmployed;
        } else
        {
        //Alle variablen in der richtigen Reihenfolge aus dem Archiv lesen
            int emp;
            ar >> m_sName >> m_iAge >> m_iMaritalStatus >> emp;
            m_bEmployed=emp;
        }
    }
    

    (btw solltest du bei der Ausgabe einige Trennzeichen vorsehen, damit die Daten am Ende wieder sauber auseinandergenommen werden können)


Anmelden zum Antworten