Компилятор выдаёт ошибку, в чем дело?? - C++
Формулировка задачи:
Задание:
1. Определить иерархию классов (в соответствии с вариантом). Базовый класс должен включать обязательный атрибут char *name.
2. Написать демонстрационную программу, в которой создаются объекты различных классов и, по требованию, вызывается метод Show() первого элемента с выводом результата на экран.
11 вариант: млекопитающее, парнокопытное, животное;
//--------------------------------------------------------------------------- #pragma hdrstop #include <vcl.h> #include<stdio.h> #include<string.h> #include<conio.h> //--------------------------------------------------------------------------- #pragma argsused #include<iostream.h> class animal{ protected: char* vid; public: animal(); animal(char*); animal(animal&v); }; animal::animal(){ vid=new char[25]; strcpy(vid,"hischik"); printf("Object animal constructor bezparametrs \n"); } animal::animal(char*v){ vid=new char[strlen(v)+1]; strcpy(vid,v); printf("Object animal constructor s parametrs \n"); } animal::animal(animal&c){ vid=new char[strlen(c.vid)+1]; strcpy(vid,c.vid); printf("Object animal CopyConstructor\n"); } class mlec { protected: char* obitanie; public: mlec(); mlec(char*); mlec(mlec&o); }; mlec::mlec(){ obitanie=new char[25]; strcpy(obitanie,"Afrika"); printf("Object mlec constructor bezparametrs\n"); } mlec::mlec(char*o){ obitanie=new char[strlen(o)+1]; strcpy(obitanie,o); printf("Object mlec constructor s parametrs\n"); } mlec::mlec(mlec&c){ obitanie=new char [strlen(c.obitanie)+1]; strcpy(obitanie,c.obitanie); printf("Object mlec CopyConstructor\n"); } class parno_kop:public animal,mlec{ private: int kol_nog; public: parno_kop; parno_kop(int, char*, char*); parno_kop(parno_kop&k); void show(); ~parno_kop(); }; parno_kop::parno_kop():animal(),mlec(){ kol_nog=4; printf("Object parno_kop constructor bez parametrs\n"); } parno_kop::parno_kop(int k, char*v, char*o):animal(v),mlec(o) { kol_hog=k; printf("Object parno_kop constructor s parametrs\n"); } parno_kop::parno_kop(parno_kop&k){ kol_nog=k.kol_nog; vid=new char[strlen(c.vid)+1]; strcpy(vid,k.vid); obitanie=new char [strlen(t.obitanie)+1]; strcpy[obitanie,k.obitanie]; printf("Object parno_kop CopyConstructor\n"); } void parno_kop::show(){ printf("vid = %s\n",vid); printf("obitanie = %s\n",obitanie); printf("kol_nog = %d\n",kol_nog); } parno_kop::~parno_kop(){ delete[]kol_nog; } int main(int argc, char* argv[]) { parno_kop s1; s1.show(); parno_kop s2(2,"hischik","afrika"); s2.show(); parno_kop s3(s2); s3.show(); getch(); return 0; }
Решение задачи: «Компилятор выдаёт ошибку, в чем дело??»
textual
Листинг программы
#include <cstring> #include <cstdio> class Animal { public: Animal() : name_(NULL) {} explicit Animal(const char *name) : name_(NULL) { SetName(name); } void SetName(const char *name) { delete [] name_; name_ = strcpy(new char[strlen(name) + 1], name); } char *GetName() const { return name_; } virtual void Print() { printf("Name: %s\n", GetName()); } private: char *name_; }; class Mammalia : public Animal { public: Mammalia() : Animal(), habitat_(NULL) {} Mammalia(char *name, char *habitat) : Animal(name), habitat_(NULL) { SetHabitat(habitat); } void SetHabitat(const char *habitat) { delete [] habitat_; habitat_ = strcpy(new char[strlen(habitat) + 1], habitat); } char *GetHabitat() const { return habitat_; } virtual void Print() { printf("Name: %s\n", GetName()); printf("Habitat: %s\n", GetHabitat()); } private: char *habitat_; }; class Artiodactyla : public Mammalia { public: Artiodactyla() : Mammalia(), leg_number_(0) {} Artiodactyla(char *name, char *habitat, size_t leg_number) : Mammalia(name, habitat), leg_number_(leg_number) {} void SetLegNumber(size_t leg_number) { leg_number_ = leg_number; } size_t GetLegNumber() const { return leg_number_; } virtual void Print() { printf("Name: %s\n", GetName()); printf("Habitat: %s\n", GetHabitat()); printf("Leg number: %d\n", GetLegNumber()); } private: size_t leg_number_; }; int main(int argc, char **argv) { Artiodactyla pig("Piggie", "Africa", 4); pig.Print(); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д