Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New to the CF scene
    Join Date
    Mar 2003
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    overloading operators..please help

    I have many errors when I compiled it. I think it's all from overloading operator. I have so many errors...this is one of them

    binary '+' : no operator defined which takes a right-hand operand of type 'class FuelPurchase' (or there is no acceptable conversion. Can anyone fix please this for me?

    Here's my coding

    Header file of vehicle
    PHP Code:
    #ifndef VEHICLE_H
    #define VEHICLE_H
    using namespace std;

    static const 
    int LEN 25;

    class 
    Vehicle

    private:
    char name[LEN]; 
    char model[LEN]; 
    int year;
    int totalcost;
    int totallitres

    public:
    Vehicle();
    Vehicle(const char *nchar *mint y);
    Vehicle(const Vehicle &r); //copy constructor
    const operator +(const Journeym) const;
    const 
    operator +(const FuelPurchasef) const;
    print(); 

    };
    #endif 
    source file of Vehicle
    PHP Code:
    #include <iostream.h>
    #include <iomanip.h>
    #include <string.h>
    #include "vehicle.h"

    using namespace std;

    Vehicle::Vehicle()
    {
    strcpy(name"");
    strcpy(model"");
    year 0;
    }

    Vehicle::Vehicle(char *nchar *mint y
    {
    strncpy(namenLEN);
    strncpy(modelmLEN);
    year y;
    }

    Vehicle::Vehicle(const Vehicle &r//copy constrcutor
    {
    name r.name;
    model r.model;
    year r.year;
    totalcost r.totalcost;
    totallitres r.totallitres;

    }

    Vehicle:perator +(const Journeym); //First additional operator
    {
    totaldistance totaldistance m.distance;



    Vehicle:perator +(const FuelPurchasef); //Second additonal operator

    totalcost totalcost f.cost
    totallitrs totallitres f.litres

    }


    Vehicle:rint() 
    int distance=0,services=0,cost=0,litres=0//all new vehicles begins with zero kilometers travelled and zero fuel
    double fueleconomy=0average=0//Set number of decimal places
    cout.setf(ios::fixed);
    cout.setf(ios::showpoint);
    cout.precision(1);

    cout <<"Vehicle: "<<endl//Display the manufacturer, model, year of manufacture 
    cout <<distance<<"km travelled requiring "<<litres<<" litres of fuel at a cost of$"<<cost<<endl;//total kilometers travleed, total fuel costs
    if (distance=0)

    cout <<"No travel has been recorded yet"<<endl;
    cout <<"No fuel has been purchased yet"<<endl;
    }

    else

    int fueleconomy = (litres/distance)*100//fuel economy(liters per 100 kilometers)
    cout << "This vehicle achieved a fuel economy of "<<fueleconomy<<"litres/100km"<<endl;
    int services distance/100;
    cout << "This vehicle should have undergone "<<services<<" service(s)"<<endl//total number of services
    average cost/litres;
    cout << "The average cost of fuel was $ "<<average<<endl;
    }
    return(
    0);


    this si header file for journey
    PHP Code:
    #ifndef JOURNEY_H
    #define JOURNEY_H

    class Journey
    {
    private:
    int distance;

    public:
    Journey();
    Journey(const int distance);

    };
    #endif 

    this is source file file journey
    PHP Code:
    #include <iostream>
    #include "journey.h"
    using namespace std;

    Journey::Journey()
    {
    distance 0;
    }

    Journey::Journey(int distance)
    {
    distance d;

    here's the header file for FuelPurchase
    PHP Code:
    #ifndef FUELPURCHASE_H
    #define FUELPURCHASE_H

    class FuelPurchase
    {
    private:
    int cost;
    int litres;

    public:
    FuelPurchase();
    FuelPurchase(const int cint l);

    };
    #endif 

    This is source file for FuelPurchase
    PHP Code:
    #include <iostream.h>
    #include "fuelpurchase.h"
    using namespace std;

    FuelPurchase::FuelPurchase()
    {
    cost 0;
    litres 0;

    }

    FuelPurchase::FuelPurchase(int cint l);
    {

    cost c;
    litres l;

    Here's the main code...
    PHP Code:

    #include <iostream>
    #include <string>

    using namespace std;

    #include "Vehicle.h"
    #include "FuelPurchase.h"
    #include "Journey.h"

    int main(int argccharargv[])
    {
    Vehicle a("BMW""A6"2003);
    Vehicle b("Toyota""A100"2003);
    Vehicle c("Mercedes-Benz""CL600"2003);

    cout << "Original Statistical:" << endl;
    cout << "=====================" << endl;

    a.print();
    b.print();
    c.print();

    FuelPurchase(5060);
    Journey(150);
    FuelPurchase(1215);

    FuelPurchase(5060);
    Journey(250);
    FuelPurchase(2222);

    FuelPurchase(5060);
    Journey(350);
    FuelPurchase(5040);

    cout << "Final Statistics:" << endl;
    cout << "=================" << endl;

    a.print();
    b.print();
    c.print();

    return(
    0);

    Last edited by Tozilla; 03-29-2003 at 07:57 AM.

  • #2
    Leo
    Leo is offline
    New to the CF scene
    Join Date
    Apr 2003
    Location
    Switzerland
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts
    const operator +(const Journey& m) const;
    const operator +(const FuelPurchase& f) const;

    you cant use the + sign for the name of a methode

  • #3
    New Coder
    Join Date
    Dec 2002
    Posts
    23
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Originally posted by Leo
    you cant use the + sign for the name of a methode
    actually you can, that's the point of 'operator overloading'. the first problem i see with this code is that the operator functions don't return anything. they normally return an object of the same type that you are overloading the operator for... so in the vehicle class, it should return a vehicle.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •