Ich habe eine Header-Datei und eine .cpp-Datei. Ich versuche, eine Präfix- und Postfix-Operator-Überladung zu implementieren, aber ich bekomme diesen Fehler beim Einrichten der Überladung.Überladener 'operator ++' muss ein unärer oder binärer Operator sein (hat 3 Parameter)
fraction.h
#ifndef FRACTION_H
#define FRACTION_H
#include <iostream>
using namespace std;
class Fraction
{
public:
Fraction();
Fraction(int, int);
int getTop() {return m_top;}
int getBottom() {return m_bottom;}
void set(int t, int b) {m_top=t; m_bottom=b; reduce();
}
protected:
private:
void reduce();
int gcf(int, int);
int m_top;
int m_bottom;
};
Fraction& operator ++ (Fraction);
Fraction operator++(Fraction, int);
#endif
Main.cpp
#include <iostream>
using namespace std;
#include "fraction.h"
int main {
cout << "The fraction is" << f;
cout << "The output of ++f is " << (++f) << endl;
cout << "The fraction is" << f;
cout << "The output of f++ is " << (f++) << endl;
cout << "The fraction is" << f;
return 0;
}
Fraction& Fraction::operator ++ (Fraction){
// Increment prefix
m_top += m_bottom;
return *this;
}
Fraction Fraction::operator ++ (Fraction, int){
//Increment postfix
}
Dies sind die beiden Fehler, die ich erhalten:
prefix error: "Parameter of overloaded post-increment operator must have type 'int' (not 'Fraction')"
postfix error: "Overloaded 'Operator++' must be a unary or binary operator (has 3 parameters)"
Ist das Präfix Fehler tatsächlich ein Fehler mit meinem ide? Ich weiß, dass es für Post-Inkremente "int" sein muss, aber ich versuche ein Pre-Inkrement zu machen. Ich benutze xcode.
Es gibt mehrere Ausgabe s in deinem Code. Hier sind ein paar, die beheben, die Ihnen die Antwort bekommen könnten. In 'fraction.h' deklarieren Sie eine Klasse namens' fraction', aber die Inkrementoperatoren verwenden eine Klasse namens 'Fraction'. In 'fraction.h' deklarieren Sie Nichtmitgliedsversionen der beiden Operatoren, während Sie in' Main.cpp' Operatoren definieren, die Mitgliedfunktionen der Klasse 'Fraction' sind. In [this] (http://en.cppreference.com/w/cpp/language/operator_incdec) finden Sie Einzelheiten zu den Definitionen der Operatoren innerhalb und außerhalb der Klasse. – crayzeewulf