нет подходящего конструктора по умолчанию, доступная ошибка
908 просмотра
3 ответа
вот мой код:
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: «пакет»: нет подходящего конструктора по умолчанию, доступного
ошибка связана с наследованием конструктора базового класса, но я не знаю точно, почему код не работает. Помогите мне, пожалуйста.
Автор: Mwiti Источник Размещён: 12.11.2019 09:49Ответы (3)
2 плюса
Конструктор for twoDayPackage
сначала создаст package
, прежде чем создавать flatFee
. Поскольку вы не говорите ему, как это сделать, он ищет способ построения по умолчанию package
.
Когда вы строите, 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) {
}
//..
};
Автор: Peter Wood
Размещён: 08.05.2013 07:12
4 плюса
twoDayPackage::twoDayPackage(double FlatFee):
flatFee(FlatFee)
вызывает базовый конструктор package()
, потому что вы ничего не указали.
Добавьте строку package::package(){};
в пакет классов :)
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);
}
};
Автор: olevegard
Размещён: 08.05.2013 06:41
Вопросы из категории :
- c++ What are the barriers to understanding pointers and what can be done to overcome them?
- c++ Какой самый простой способ для анализа файла INI в C ++?
- c++ Когда вы должны использовать «друг» в C ++?
- c++ Как вы очищаете переменную stringstream?
- c++ В C ++ конструктор и деструктор могут быть встроенными функциями?
- c++ Что такое виртуальный базовый класс в C ++?
- c++ В чем разница между #include <filename> и #include "filename"?
- c++ Какой самый лучший бесплатный детектор утечки памяти для программы на C / C ++ и ее подключаемых библиотек DLL?
- c++ Как преобразовать std :: string в LPCWSTR в C ++ (Unicode)
- c++ Regular cast vs. static_cast vs. dynamic_cast
- inheritance Предпочитаете композицию наследству?
- inheritance Вызывать события C # извне класса-владельца?
- inheritance Хорошие причины запретить наследование в Java?
- inheritance Что «супер» делает в Python?
- inheritance Наследование Python - как отключить функцию
- inheritance Переопределить метод с помощью общих параметров в Java?
- inheritance В Java, как я могу вызвать метод базового класса из переопределяющего метода в производном классе?
- inheritance Что такое нарезка объектов?
- inheritance Наследование комментариев для C # (фактически любой язык)
- inheritance Как вызвать функцию родительского класса из производной функции класса?