#include "Distance.h"
int main()
{
Distance dist1, dist2, dist3;
int feet = 2000;
int yards = 2000;
int miles;
dist1.Initialize(2, 35, 1);
dist2 = dist1.ConvertFeet(feet);
dist3.ConvertYards(yards);
dist1.PrintDistance();
dist2.PrintDistance();
dist3.PrintDistance();
dist3 = dist1.AddDistance(dist2);
dist3.PrintDistance();
return 0;
}
.\Main.cpp(12) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
c:\documents and settings\darren\my documents\visual studio 2008\projects\distance\distance\Distance.h(23): could be 'Distance &Distance::operator =(const Distance &)'
while trying to match the argument list '(Distance, int)'
.\Main.cpp(19) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
c:\documents and settings\darren\my documents\visual studio 2008\projects\distance\distance\Distance.h(23): could be 'Distance &Distance::operator =(const Distance &)'
while trying to match the argument list '(Distance, int)'
Change your Distance.h to following. It should work :-)
#ifndef DISTANCE_H_
#define DISTANCE_H_
#include <iostream> // This is Distance.h
#include <string>
using namespace std;
const int FEET_IN_YARDS = 3;
const int YARDS_IN_MILES = 1760;
class Distance
{
int feet;
int yards;
int miles;
public:
int FeetAre()const;
int YardsAre()const;
int MilesAre()const;
Distance AddDistance(Distance d);
Distance ConvertFeet(int f);
Distance ConvertYards(int y);
void PrintDistance();
void Initialize(int f, int y, int m);
};
int Distance::FeetAre() const
{ return feet;
}
int Distance::YardsAre() const
{ return yards;
}
int Distance::MilesAre() const
{ return miles;
}
Distance Distance::AddDistance(Distance d)// function member of class
{
Distance sum;
int f = feet = d.feet;
sum.feet = f % 3;
int y = yards = d.yards;
sum.yards = y % YARDS_IN_MILES;
sum.miles = miles + d.miles + y / YARDS_IN_MILES;
return sum;
}
Distance Distance::ConvertYards(int y)
{
Distance con;
con.feet = 3;
con.yards = y % YARDS_IN_MILES;
con.miles = y / YARDS_IN_MILES;
return con;
}
Distance Distance::ConvertFeet(int f)
{
Distance con;
con.feet = 0;
con.yards = f % FEET_IN_YARDS;
con.miles = f / YARDS_IN_MILES;
return con;
}
void Distance::PrintDistance()
{
cout << "Total Feet are: "<< FeetAre() ;
cout<<"\nTotal Yards are: "<< YardsAre();
cout<<"\nTotal Miles are: "<< MilesAre();
}
void Distance::Initialize(int newFeet, int newYards, int newMiles)
{
feet = newFeet;
yards = newYards;
miles = newMiles;
}
I'm sorry but that didn't work either...it said..."fatal error C1070: mismatched #if/#endif pair in file"......but Thanks anyway...Now I learnt a new directive...so that everything is clear...This is the complete program as is......and I still need help........