错误 预期非限定 id 和预期 )

Error Expected unqualified-id and Expected )

本文关键字:id 错误      更新时间:2023-10-16

由于某种原因,我遇到了几个错误,但我认为这与我评论的代码有关。有人可以帮助我,因为我一遍又一遍地收到同样的错误。我的代码应该回答以下问题://创建一个名为 Package 的类,它应该具有包重量和包跟踪号的成员变量。添加函数以访问这些变量并在构造函数中设置它们。添加一个函数来计算运费,使用公式 成本=每磅 3 美元

为盒形包创建一个名为 Box 的派生类。它应以英寸为单位存储高度、宽度和深度的尺寸。Redfine函数以计算运费,如果最长长度+周长大于108英寸,则在正常成本中增加30

编写一个 main 函数,用于创建一个盒子,分配重量高度宽度和深度并打印运费

    #include <iostream>
    #include <string>
    using namespace std;
    namespace shipping
    {
    const double COST_PER_POUND=3.0;
    class Package
    {
    public:
        Package();//default constructor
        Package(double new_weight, string new_tracking_num);
        double get_weight() const;//accessors
        string get_tracking_num() const;//accessors
        void set_weight(double new_weight);
        void set_tracking_num(string new_tracking_num);
        double cal_shipping() const;
    private:
        double weight;
        string tracking_num;
    };
    }
    #include <string>
    #include "Package.h"
    using namespace std;
    namespace shipping
    {
    Package::Package(): tracking_num(""), weight(0)
    {
    }
    Package::Package(double new_weight, string new_tracking_num):
    tracking_num(new_tracking_num), weight(new_weight)
    {
    }
    double Package::get_weight() const
    {
    return weight;
    }
    string Package::get_tracking_num() const
    {
    return tracking_num;
    }
    void Package::set_weight(double new_weight)
    {
    weight=new_weight;
    }
    void Package::set_tracking_num(string new_tracking_num)
    {
     tracking_num= new_tracking_num;
    }
    double Package::cal_shipping() const
    {
     return weight*COST_PER_POUND;
    }
    }
    #include <string>
    #include "Package.h"
    using namespace std;
    namespace shipping
    {
    class Box : public Package{
    public:
        Box();
        Box(double new_weight, string new_tracking_num,
             double new_width, double new_height,double new_depth);
        void set_dimension(double new_width, double new_height, double new_depth);
        void get_dimensions(double &cur_width, double &cur_height, double &cur_depth);
        double calc_shipping() const;
    private:
        double width, height, depth;
    };
}
         #include "Box.h"
         #include <string>
         using namespace std;
        namespace shipping
    {
    Box::Box(): Package(),height(0),depth(0),width(0)
    {
    }
    //my error comes here 
    Box(double new_weight, string new_tracking_num,
        double new_width,double new_height,double new_depth):
    Package(new_weight, new_tracking_num), height(new_height), depth(new_depth), width(new_width)
    {
    }
    void Box::set_dimension(double new_width, double new_height, double new_depth)
    {
        width=new_width;
        height=new_height;
        depth=new_depth;
    }
    void Box::get_dimensions(double &cur_width, double &cur_height, double &cur_depth)
    {
        cur_width=width;
        cur_height=height;
        cur_depth=depth;
    }
    double calc_shipping() const{
        double longest=width;
        double girth=(height*2)+(2*depth);
        if(height>longest)
        {
            longest=height;
            girth=(width*2)+(2*depth);
        }
        if(depth>longest)
        {
            longest=depth;
            girth=(height*2)+(2*width);
        }
        if(longest+girth>108)
        {
            return Package::cal_shipping()+30;
        }
        else
        {
            return Package::calc_shipping();
        }
    }
}

我在您的代码中看到以下问题:

  1. 构造函数中,初始化成员变量的顺序与它们在类中的显示顺序不同。

    例:

    在类Package中,您有以下变量:

     double weight;
     string tracking_num;
    

    在构造函数中,先初始化tracking_num,然后再初始化 weight 。 例:

    Package::Package(): tracking_num(""), weight(0)
    {
    }
    

    它切换初始化顺序,因为这是一项要求。由于编译器正在更改代码的执行顺序,因此它会警告您。

    你有更多的这样的例子,在PackageBox.

  2. 您忘记在几个函数中添加类范围Box::

    Box(double new_weight, string new_tracking_num,
        double new_width, double new_height,double new_depth):
    

    需要

    Box::Box(double new_weight, string new_tracking_num,
             double new_width, double new_height,double new_depth):
    

    double calc_shipping() const{
    

    需要

    double Box::calc_shipping() const{
    
  3. 您在三个地方拼错了calc_shipping()并使用了cal_shipping(缺少"c")。