Reputation: 25
I am having trouble understanding how to construct a subclass. My parent class is called "package" and the children are called "overnight" and "twoDay". The package class handles the recipient's name and address as well as the packages weight and the shipping cost per oz. twoDay also adds an additional shipping fee and overnight adds more to the shipping cost per oz.
The package class files run fine but I can't figure out how to use it in the children constructors. Below I will show the files for package and overnight and the header area of the main program file.
program.cpp
#include <iostream>
#include <string>
#include "package.h"
#include "twoDay.h"
#include "overnight.h"
int main() {
}
package.h
#include <string>
#include "name.h"
#include "address.h"
class package {
public:
package();
package(std::string initFirst, std::string initLast, std::string initLineOne,
std::string initLineTwo, std::string initCity, std::string initState,
std::string initZip, double initWeight, double initPrice);
double getWeight() const;
double getPrice() const;
double getCost() const;
private:
name recipientName;
address recipientAddress;
double weight;
double price;
};
package.cpp
#include "package.h"
package::package(){
recipientName = name();
recipientAddress = address();
weight = 0.0;
price = 0.0;
}
package::package(std::string initFirst, std::string initLast, std::string initLineOne,
std::string initLineTwo, std::string initCity, std::string initState,
std::string initZip, double initWeight, double initPrice)
: recipientName(initFirst,initLast), recipientAddress(initLineOne,initLineTwo,initCity,initState,initZip) {
weight = initWeight;
price = initPrice;
}
overnight.h
#include <string>
class overnight : public package {
public:
overnight();
overnight(std::string initFirst, std::string initLast, std::string initLineOne,
std::string initLineTwo, std::string initCity, std::string initState,
std::string initZip, double initWeight, double initPrice, double initOunceFee);
double getOvernightCost() const;
private:
package packageInfo;
double ounceFee;
};
overnight.cpp
#include "overnight.h"
overnight::overnight() {
packageInfo = package();
ounceFee = 0.0;
}
overnight::overnight(std::string initFirst, std::string initLast, std::string initLineOne,
std::string initLineTwo, std::string initCity, std::string initState,
std::string initZip, double initWeight, double initPrice, double initOunceFee)
: packageInfo(initFirst,initLast,initLineOne,initLineTwo,initCity,initState,initZip,initWeight,initPrice){
ounceFee = initOunceFee;
}
So the part I'm having trouble with is the second constructor of overnight.cpp with the parameters.
Upvotes: 0
Views: 932
Reputation: 409166
The class overnight
is a package
, you don't need composition and embed a package
object in the class.
As for the constructor, do e.g.
overnight::overnight(std::string initFirst, std::string initLast, std::string initLineOne,
std::string initLineTwo, std::string initCity, std::string initState,
std::string initZip, double initWeight, double initPrice, double initOunceFee)
: package(initFirst,initLast,initLineOne,initLineTwo,initCity,initState,initZip,initWeight,initPrice){
//^^^^^^^ Note the use of the base class here
ounceFee = initOunceFee;
}
Upvotes: 1