2

ここに私のコードがあります:

class package
{
protected:
    string name;
    string city;
    string state;
    int zip;
    double weight;
    double costPerOunce;

public:

    package::package(string Name, string City, string State, int Zip, double Weight, double CostPerOunce):
      name(Name), city(City), state(State),
      zip(Zip), weight(Weight), costPerOunce(CostPerOunce)
      {

      }
      double calculateCost()
    {
        return (weight * costPerOunce);
    }

};
class twoDayPackage: public package
{
protected:
    double flatFee;
public:
    twoDayPackage::twoDayPackage(double FlatFee):
      flatFee(FlatFee)
      {

      }
    double calculateCost()
    {
        return (weight * costPerOunce) + flatFee;

    }
};
int main()
{


    system ("pause");
    return 0;
}

このコードを実行しようとすると、次のようなエラーが表示されます: エラー C2512: 'パッケージ': 適切な既定のコンストラクターがありません

エラーは基本クラスのコンストラクターの継承に関係していますが、コードが実行されていない理由が正確にはわかりません。私を助けてください。

4

3 に答える 3

4
twoDayPackage::twoDayPackage(double FlatFee):
  flatFee(FlatFee)

package()他に何も指定していないため、基本コンストラクターを呼び出しています。

package::package(){};クラスパッケージに行を追加してください:)

于 2013-05-08T06:42:23.443 に答える
3

パッケージのコンストラクターが必要です。また、コンストラクターを宣言するときは必要ありませんpackage::package(...)(これは、cpp ファイルで定義するときのためです) package(...)

class package
{
protected:
    string name;
    string city;
    string state;
    int zip;
    double weight;
    double costPerOunce;

public:
    package()
    {}
    // \/ You don't need package:: that's only needed when you define the func in cpp
    package(
        string Name, string City, string State, int Zip, 
        double Weight, double CostPerOunce
    )
        : name(Name), city(City), state(State),
        zip(Zip), weight(Weight), costPerOunce(CostPerOunce)
    {

    }
    double calculateCost()
    {
        return (weight * costPerOunce);
    }

};
于 2013-05-08T06:41:37.480 に答える
2

のコンストラクターは、を構築する前に、twoDayPackageまず を作成します。その方法を教えていないので、デフォルトの構築方法を探します。packageflatFeepackage

構築するときtwoDayPackageは、基礎となる を構築するために必要なすべてを与える必要がありますpackage。それか、packageコンストラクターに渡す値を決定します。

必要なパラメーターを渡すと、次のようになります。

class twoDayPackage {
public:
    twoDayPackage(string Name, string City, string State, int Zip, double Weight, double CostPerOunce, double flatFee) :
    package(Name, City, State, Zip, Weight, CostPerOunce),
    flatFee(flatFee) {
    }
    //..
};
于 2013-05-08T07:12:31.820 に答える