0

делая программу с наследниками столкнулся со следующей ошибкой: отсутствуют экземпляры конструктора "имя_конструктора::имя_конструктора", соответствующие списку аргументов. Прошу не кидайте камнями, с 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; }

  • 3
    Код здесь дают в виде текста, а не скриншотами. Не понимаю, кстати - неужели скриншоты делать проще, чем Ctrl-C Ctrl-V нажать? :) – Harry Dec 16 '20 at 20:06
  • Извините, только зарегистрировался, не знал как тут код нужно вставлять – novachronoa Dec 16 '20 at 20:09
  • Тем, кто отвечает часто нужно воспроизводить и модифицировать ваш код. Заставлять их все это перепечатывать - преступление. Более того, через время хостинг картинок может снести все старые картинки и от Вашего вопроса не будет совершенно никакой пользы, для других пользователей. К тому же код индексируют поисковые системы, что помогает другим пользователям находить ответы с такими же проблемами, что в случае с картинками сделать невозможно – Михаил Ребров Dec 16 '20 at 20:15
  • Я понял Вас, все исправил. – novachronoa Dec 16 '20 at 20:18
  • "Lays" это литерал. На него и другие строковые литералы может указать только константный указатель, а в конструкторе у вас аргументы не const char. Исправьте на `food( const char, int, const char*)` – AR Hovsepyan Dec 16 '20 at 20:20
  • @ARHovsepyan сделал как Вы сказали, вроде помогло, спасибо большое!!! – novachronoa Dec 16 '20 at 20:30

0 Answers0