делая программу с наследниками столкнулся со следующей ошибкой: отсутствуют экземпляры конструктора "имя_конструктора::имя_конструктора", соответствующие списку аргументов. Прошу не кидайте камнями, с C++ начал знакомство только недавно (примерно месяц). Прикрепляю скрины главного модуля (main.cpp), базового класса (Good.cpp и Good.h) и класса наследника (food.cpp и food.h). Буду очень благодарен, если подскажите в чем дело!
main.cpp:
#include "C:\Users\HOME\source\repos\lab4\lab4\clothes.h"
#include "C:\Users\HOME\source\repos\lab4\lab4\Good.h"
#include "C:\Users\HOME\source\repos\lab4\lab4\food.h"
using namespace std;
int main() {
food f1("Lays", 95, "Crisps");
}
good.h:
#ifndef GOOD_H
#define GOOD_H
#include <iostream>
#include <string.h>
using namespace std;
class Good
{
public:
Good();
int getPrice();
virtual void show();
void setManuf(char*);
void setPrice(int);
protected:
char manuf[20];
int price;
private:
};
#endif // GOOD_H
good.cpp:
#include "C:\Users\HOME\source\repos\lab4\lab4\Good.h"
using namespace std;
Good::Good():price(0) {
strcpy(manuf, "NoManufacturer");
}
int Good::getPrice() {
return price;
}
void Good::show() {
cout << "Manufacturer: " << manuf << " Price: " << price << endl;
}
void Good::setManuf(char* mf) {
strcpy(manuf, mf);
}
void Good::setPrice(int pr) {
price = pr;
}
food.h:
#ifndef FOOD_H
#define FOOD_H
#include "Good.h"
class food : public Good
{
public:
food(char, int, char);
void setKindof(char*);
void show();
protected:
private:
char kindof[15];
};
#endif // FOOD_H
food.cpp:
#include "C:\Users\HOME\source\repos\lab4\lab4\food.h"
food::food(char* mf, int pr, char* kf) {
strcpy(manuf, mf);
price = pr;
strcpy(kindof, kf);
}
void food::setKindof(char* kf) {
strcpy(kindof, kf);
}
void food::show() {
cout << "Manufacturer: " << manuf << " Price: " << price << " Kind of food: " << kindof << endl;
cout << "" << endl;
}
"Lays"это литерал. На него и другие строковые литералы может указать только константный указатель, а в конструкторе у вас аргументы не const char. Исправьте на `food( const char, int, const char*)` – AR Hovsepyan Dec 16 '20 at 20:20