I'm having trouble with an inheritance hierarchy program. I have widdled this program down from a lot of errors to just 1 error. However, I can't seem to figure out how to correct it.
Here is the error message I'm receiving:
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'void' (or there is no acceptable conversion)
Here is what I have:
Package.h
#ifndef Package_H
#define Package_H
#include <iostream>
#include <string>
using namespace std;
//The class Package is the base class for derived classes TwoDayPackage and OverNightPackage
class Package //begins class Package
{
public:
Package(const string &, const string &, const string &, const string &, const string &, const string &, const string &, const string &, const string &, const string &, double = 0.0, double = 0.0, double = 0.0); //constructor
//set and get functions for sender
void setSenderName(const string &);
string getSenderName() const;
void setSenderAddress(const string &);
string getSenderAddress() const;
void setSenderCity(const string &);
string getSenderCity() const;
void setSenderState(const string &);
string getSenderState() const;
void setSenderZip(const string &);
string getSenderZip() const;
//set and get functions for recipient
void setRecipientName(const string &);
string getRecipientName() const;
void setRecipientAddress(const string &);
string getRecipientAddress() const;
void setRecipientCity(const string &);
string getRecipientCity() const;
void setRecipientState(const string &);
string getRecipientState() const;
void setRecipientZip(const string &);
string getRecipientZip() const;
void setWeight(double);
double getWeight() const;
void setShip(double);
double getShip() const;
double calculateCost() const;
private:
string senderName;
string senderAddress;
string senderCity;
string senderState;
string senderZip;
string recipientName;
string recipientAddress;
string recipientCity;
string recipientState;
string recipientZip;
double weight;
double shipCost;
};
#endif
Package.cpp
#include <iostream>
#include <string>
using namespace std;
#include "Package.h"
Package::Package(const string & sname, const string & saddress, const string & scity, const string & sstate, const string & szip, const string & rname, const string & raddress, const string & rcity, const string & rstate, const string & rzip, double weight, double shipCost, double calculateCost)
{
senderName = sname;
senderAddress = saddress;
senderCity = scity;
senderState = sstate;
senderZip = szip;
recipientName = rname;
recipientAddress = raddress;
recipientCity = rcity;
recipientState = rstate;
recipientZip = rzip;
setWeight(weight);
setShip(shipCost);
}
void Package::setSenderName(const string & sname)
{
senderName = sname;
}
string Package::getSenderName() const
{
return senderName;
}
void Package::setSenderAddress(const string & saddress)
{
senderAddress = saddress;
}
string Package::getSenderAddress() const
{
return senderAddress;
}
void Package::setSenderCity(const string & scity)
{
senderCity = scity;
}
string Package::getSenderCity() const
{
return senderCity;
}
void Package::setSenderState(const string & sstate)
{
senderState = sstate;
}
string Package::getSenderState() const
{
return senderState;
}
void Package::setSenderZip(const string & szip)
{
senderZip = szip;
}
string Package::getSenderZip() const
{
return senderZip;
}
void Package::setRecipientName(const string & rname)
{
recipientName = rname;
}
string Package::getRecipientName() const
{
return recipientName;
}
void Package::setRecipientAddress(const string & raddress)
{
recipientAddress = raddress;
}
string Package::getRecipientAddress() const
{
return recipientAddress;
}
void Package::setRecipientCity(const string & rcity)
{
recipientCity = rcity;
}
string Package::getRecipientCity() const
{
return recipientCity;
}
void Package::setRecipientState(const string & rstate)
{
recipientState = rstate;
}
string Package::getRecipientState() const
{
return recipientState;
}
void Package::setRecipientZip(const string & rzip)
{
recipientZip = rzip;
}
string Package::getRecipientZip() const
{
return recipientZip;
}
void Package::setWeight(double weight)
{
weight = (weight < 0.0 ) ? 0.0 : weight;
}
double Package::getWeight() const
{
return weight;
}
void Package::setShip(double shipCost)
{
shipCost = ( shipCost < 0.0) ? 0.0 : shipCost;
}
double Package::getShip() const
{
return shipCost;
}
double Package::calculateCost() const
{
return weight * shipCost;
}
//The class TwoDayPackage is the first derived class from class Package
class TwoDayPackage : public Package
{
public:
TwoDayPackage(const string &, const string &, const string &, const string &, const string &, const string &,
const string &, const string &, const string &, const string &, double = 0.0, double = 0.0, double = 0.0); //constructor
void setFlatFee(double);
double getFlatFee() const;
void calculateCost() const;
private:
double flatFee;
};
//The class OverNightPackage is the second derived class from class Package
class OverNightPackage : public Package
{
public:
OverNightPackage(const string &, const string &, const string &, const string &, const string &, const string &,
const string &, const string &, const string &, const string &, double = 0.0, double = 0.0, double = 0.0); //constructor
void setFee(double);
double getFee() const;
void calculateCost() const;
private:
double fee;
};
PackageTest.cpp
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <string>
using namespace std;
using std::setprecision;
#include "Package.cpp"
//Test File
int main()
{
OverNightPackage box("John Doe", "789 Fire Street", "Hell", "MI", "48169", "Jane Doe", "987 Leg Sun Crossing", "Intercourse", "PA", "17534", 10.00, 1.50, .85);
TwoDayPackage parcel("John Doe", "789 Fire Street", "Hell", "MI", "48169", "Jane Doe", "987 Leg Sun Crossing", "Intercourse", "PA", "17534", 15.00, 1.05, 5.00);
cout << fixed << setprecision(2);
cout << "To ship a box with overnight delivery:\n"
<< "\nThe sender " << box.getSenderName()
<< "\n " << box.getSenderAddress()
<< "\n " << box.getSenderCity() << ", " << box.getSenderState() << " " << box.getSenderZip()
<< "\nThe recipient " << box.getRecipientName()
<< "\n " << box.getRecipientAddress()
<< "\n " << box.getRecipientCity() << ", " << box.getRecipientState() << " " << box.getRecipientZip()
<< "\nThe cost is $ " << box.calculateCost()
<< "\n\n\n\nTo ship a parcel with 2 day delivery:\n"
<< "\nThe sender " << parcel.getSenderName()
<< "\n " << parcel.getSenderAddress()
<< "\n " << parcel.getSenderCity() << ", " << parcel.getSenderState() << " " << parcel.getSenderZip()
<< "\nThe recipient " << parcel.getRecipientName()
<< "\n " << parcel.getRecipientAddress()
<< "\n " << parcel.getRecipientCity() << ", " << parcel.getRecipientState() << " " << parcel.getRecipientZip()
<< "\nThe cost is $ "<< parcel.calculateCost() << endl;
_getch();
}
Does anyone know how to correct this issue?