33 33 C:\Users\gauthjer\AppData\Local\Temp\Temp1_Ok.zip\rectangles.cpp [Error] 'rectangle operator++()' must have an argument of class or enumerated type
I created a program and the latter want to register a compiler error. My question is: Is an surcharge operator (overrriding) have alway needed arguments?
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std ; 
class rectangle{
    double longueur;
    double largeur;
    public : 
    rectangle(double a = 0, double b = 0){ longueur = a; largeur = b; }
    void setDimension(double longu, double larg);
    double getLong() const;
    double getLarg() const;
    double surface() const;
    double perimeter()const;
    friend ostream & operator << (ostream &, const rectangle & flot);
    friend istream & operator >> (istream &, rectangle & flot);
    friend rectangle operator + (rectangle, rectangle);
    friend rectangle operator * (rectangle, rectangle);
    friend rectangle operator == (rectangle, rectangle);
    friend rectangle operator != (rectangle, rectangle);
    **friend rectangle operator ++  ();**
    friend rectangle operator ++  (int);
};
// Je dois utiliser longu au lieu de long comme demande dans le tp - long est un type d'argument (comme double)
void rectangle :: setDimension(double longu, double larg) {
    longueur = longu;
    largeur = larg;
}
void rectangle :: getLong() const{
    return longueur; 
}
void rectangle :: getLarg() const{
    return largeur; 
}
void rectangle :: surface() const{
    return longueur * largeur;
}
void perimeter :: perimeter() const{
    return 2*longeur + 2*largeur;
}
ostream & operator << (ostream & sortie, const rectangle & flot){
sortie << "(" << flot.longueur << "," << flot.largeur << ")";
return sortie;
}
istream & operator >> (istream & entree, rectangle & flot){
    char c = '\0';
    int longueur, largeur;
    bool ok = true;
    entree >> c; 
    if(c != '(') ok = false;
        else{ 
        entree >> longeur >> c;
            if (c != ',') ok = false;
                else{
                    entree >> largeur >> c;
                    if (c != ')') ok = false;
                }
        }
if(ok)  {flot.setDimension(longueur, largueur)}
    else entree.clear(ios::badbit | entree.rdstate() );
    return entree;
}
rectangle operator + (rectangle a, rectangle b){
    rectangle rectangle1;
    rectangle.longueur = a.longueur + b.longueur;
    rectangle.largeur = b.largeur + b.largeur; 
    return rectangle1;  
}
rectangle operator * (rectangle a, rectangle b){
    rectangle rectangle1;
    rectangle.longueur = a.longueur * b.longueur;
    rectangle.largeur = b.largeur * b.largeur; 
    return rectangle1;  
}
rectangle operator == (rectangle a, rectangle b){
    if (a.longueur == b.longueur && a.largeur == b.largeur) return true;
    else return false;  
}
rectangle operator != (rectangle a, rectangle b){
    if (a.longueur != b.longueur || a.largeur != b.largeur) return true;
    else return false; 
}
rectangle operator ++ (){
    longueur ++ ; largeur++ ; 
    return *this ;  
}
rectangle operator ++  (int n){
    rectangle rectangle1 = *this ;
    longueur++ ; largeur++ ;
    return rectangle ;  
}
 
     
    