My package compiles, the get functions work except for the doubles it prints a random number. Any ideas?
#ifndef Package_H
#define Package_H
#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); //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;
void print() 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
.
//next page
#include <iostream>
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)
{
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;
}
void Package::print() const
{
cout<<"Sender:"<<endl
<<senderName<<endl
<<senderAddress<<endl
<<senderCity<<", "<<senderState<<" "<<senderZip<<endl
<<endl
<<"Recepient:"<<endl
<<recipientName<<endl
<<recipientAddress<<endl
<<recipientCity<<", "<<recipientState<<" "<<recipientZip<<endl
<<endl
<<"Weight of package: "<<weight<<" oz."<<endl
<<"Type of delivery: Regular Delivery"<<endl
<<"Cost of package: $"<<calculateCost()<<endl;
}
//The class TwoDayPackage is the first derived class from class Package
//The class OverNightPackage is the second derived class from class Package
.
//main function
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
using std::setprecision;
#include "Package.h"
/*#include"overnighttest.h"
#include"twoday2.h"*/
//Test File
int main()
{
Package message("chris beyer","1 westwood circle","edison","nj","08820","mike b","1 westwood cirle","edison","nj","08820",10.00,1.50);
/*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<<"Package delivery services program"<<endl
<<endl
<<"Cost per ounce for a package: $.50/ounce"<<endl
<<"Additional cost for two day delivery: $2.00/ounce"<<endl
<<"Additional cost for overnight delivery: $5.00/ounce"<<endl<<endl;
vector<Package*> myPackages;
Package *messagePtr=&message;
/*TwoDayPackage *TDpPtr=&TDp;
OvernightPackage *OpPtr=&Op;*/
myPackages.push_back(messagePtr);
/*myPackages.push_back(TDpPtr);
myPackages.push_back(OpPtr);*/
double total=0;
for(int i=0;i<myPackages.size();i++)
{
cout<<"Package #"<<i+1<<":"<<endl<<endl;
(*myPackages[i]).print();
cout<<endl;
total+=(*myPackages[i]).calculateCost();
}
cout<<"Total cost for all the packages: $"<<total<<endl;
system("pause");
return 0;
}
In your setters, you’re not setting the instance variables. For instance:
weight = (weight < 0.0) ? 0.0 : weightjust changes the temporary variable used for the argument. You can either change the name of the parameter, change the name of the instance variable (recommended), or use the syntaxthis->weight = ...