Компилятор выдаёт ошибку, в чем дело?? - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы