Ho un file di intestazione e un file .cpp. Sto cercando di implementare un sovraccarico di operatore prefisso e suffisso, ma continuo a ricevere questo errore quando si imposta il sovraccarico.L'overloading 'operator ++' deve essere un operatore unario o binario (ha 3 parametri)
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
}
Questi sono i due errori che ricevo:
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)"
è l'errore del prefisso in realtà un errore con la mia ide? So che deve essere "int" per post-incremento, ma sto cercando di fare un pre-incremento. Io uso xcode.
ci sono diversi questione s nel tuo codice. Eccone alcuni, che potrebbero essere risolti e ottenere la risposta. In 'fraction.h' dichiari una classe chiamata' fraction' ma gli operatori di incremento usano una classe chiamata 'Fraction'. In 'fraction.h' si dichiarano versioni non membri dei due operatori mentre in' Main.cpp' si definiscono operatori che sono funzioni membro della classe 'Fraction'. Vedere [questo] (http://en.cppreference.com/w/cpp/language/operator_incdec) per i dettagli riguardanti le definizioni di classe interna e classe esterna degli operatori. – crayzeewulf