gpt4 book ai didi

C++ 继承具有多个参数的构造函数 [作业]

转载 作者:行者123 更新时间:2023-11-30 02:50:13 24 4
gpt4 key购买 nike

我真的希望这是我最近一次问作业问题。在过去的七个小时里,我一直在做这件事,我的所有代码都扔掉了三次,而且我似乎无法克服继承构造函数的问题。我查看了其他问题,遵循了我所看到的每一个建议,但仍然没有骰子。任何和所有的帮助表示赞赏。

头文件:

#ifndef PACKAGE_H
#define PACKAGE_H

struct info
{
std::string sName;
std::string sAddr;
std::string sCity;
std::string sState;
std::string sZip;

std::string rName;
std::string rAddr;
std::string rCity;
std::string rState;
std::string rZip;
};

class Package
{
public:
Package(int c, double w, double co, info *i); //Constructor. Will implement
//all data types

~Package(); // Default Destructor

virtual double calculateCost(); // Not pure, can be overloaded

protected:

int counter;
double weight;
double cost;

info sendRecieve; // Struct for holding tedious info
};

class TwoDayPackage : public Package
{
public:
TwoDayPackage(int c, double w, double co, info *i, double a)
:Package(c, w, co, *i, a);

double calculateCost();

private:
double flatFee;
};

class OvernightPackage : public Package
{
public:
OvernightPackage(int c, double w, double co, info *i, double a)
:Package(c, w, co, *i);

double calculateCost();

private:
double addtlCost;
};

.cpp 定义文件:

#include "Package.h"

using namespace std;

Package::Package(int c, double w, double co, info *i)
{
cost = c;
weight = w;
cost = co;

sendRecieve.sName = i->sName;
sendRecieve.sAddr = i->sAddr;
sendRecieve.sCity = i->sCity;
sendRecieve.sState = i->sState;
sendRecieve.sZip = i->sZip;

sendRecieve.rName = i->rName;
sendRecieve.rAddr = i->rAddr;
sendRecieve.rCity = i->rCity;
sendRecieve.rState = i->rState;
sendRecieve.rZip = i->rZip;
}

double Package::calculateCost()
{
return (cost * weight);
}

// end base class definitions

TwoDayPackage::TwoDayPackage(int c, double w, double co, info *i, double a)
:Package(c, w, co, *i)
{
flatFee = a;
}

double TwoDayPackage::calculateCost()
{
return ((cost * weight) + flatFee);
}

//end TwoDayPackage definitions

OvernightPackage::OvernightPackage(int c, double w, double co, info *i, double a) :Package(c, w, co, *i)
{
addtlCost = a;
}

double OvernightPackage::calculateCost()
{
double multi = (addtlCost + cost);

return (multi * weight);
}

这是我不断遇到的错误的图片。如果有人可以提供帮助,我将不胜感激。另外,欢迎提出任何建议。预先感谢大家。

Screenshot of errors

最佳答案

Package 的构造函数的最后一个参数是 Info*OvernightPackage 的初始化列表你传递 *i 给它。 iInfo* 类型,因此 *iInfo& 类型,这不是构造函数所期望的包裹。

对于 TwoDayPackage 的初始化列表中的调用,您将 5 个参数传递给 Package 的构造函数,而它只需要 4 个。

关于C++ 继承具有多个参数的构造函数 [作业],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20612041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com