Показать сообщение отдельно
Старый 24.05.2016, 12:30   #1 (permalink)
Pantera19
Новичок
 
Регистрация: 24.05.2016
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Для класса "Футболист" создать производный класс "Нападающий" и "Защитник" ООП С++

класс ФУТБОЛИСТ с атрибутами: фамилия, название команды, рост, вес и методами: посмотреть всю информацию об объекте класса, изменить рост, из-менить вес. Для класса ФУТБОЛИСТ создать производный класс НАПАДАЮЩИЙ со своими атрибутами: мастерство (целочисленный параметр), количество забитых голов и методами: забить гол, посмотреть всю информацию об объекте (заместить соответствующий метод). Для класса ФУТБОЛИСТ создать производный класс ЗАЩИТНИК со своими атрибутами: общее количество матчей с участием объекта, количество выигранных матчей с участием объекта и методами: увеличить общее количество матчей, увеличить количество выигранных матчей.
Определить внешний метод (не являющийся методом данного класса), который запрашивает у пользователя и устанавливает новое значение для свойства: мастерство объекта класса ФУТБОЛИСТ. Параметром данного метода должна быть ссылка на объект, свойство которого следует изменить.

Код:
#include <iostream>
#include "footballer.h"
using namespace std;
int main()
{
    attacking A();
    A.footballer::print();
    A.print();
    A.transform();
    quarterback B();
    B.print();
    system("pause");
    return 0;
}
Код:
class footballer {
private:
    char * surname;
    char * team;
    float rost;
    float  weight; //вес
public:
    footballer( char * ="Name", char * ="team",  float=0.0, float =0.0);
    footballer(const footballer &);
    footballer & operator=(const footballer & );    //опер присваивания
    ~footballer();
    void print()const;
    void setrost();
    void setweight();
};


class attacking: public footballer {
private:
    unsigned short mastery;
    int gol;
public:
    attacking( unsigned short=12, int=2, char * ="Name 2 ", char * ="team ",float=175.1,float=69.5);
    attacking(const attacking & A);
    friend void transform( const  attacking &);
    attacking & operator=(const attacking & );
    ~attacking();
    void print()const;
    void setgol();
};

class quarterback: footballer {
private:
    int matches;
    int victory;
public:
    quarterback( int=1, int=0, char * ="Name 3" , char * ="team ", float=170.8 , float=75.0);
    quarterback( const quarterback & A);
    quarterback & operator=(const quarterback & );
    ~quarterback();
    void setmatches()const;
    void setvictory()const;
};
Код:
#include <iostream>
#include "footballer.h"
using namespace std;
footballer::footballer(char * a, char * b, float c,float d):
surname(a),team(b)
{
    surname=new char[strlen(a)+1];
    strcpy(a,surname);
    team=new char[strlen(b)+1];
    strcpy(b,team);
}

footballer::footballer(const footballer &A)
{
 surname = new char[strlen(A.surname)+1];
 strcpy(surname,A.surname);
 team= new char[strlen(A.team)+1];
 strcpy(team,A.team);
 weight=A.weight;
 rost=A.rost;
}


footballer::~footballer()
{
    delete[]surname;
    delete[]team;
}

footballer & footballer ::operator=(const footballer &  A)
{
    if (this!=&A)
    {
        surname=new char[strlen(A.surname)+1];
        team=new char[strlen(A.team)+1];
        weight=A.weight;
        rost=A.rost;
    }
    return *this;
}

        


void footballer::setrost()
{
    cout<<"\n Enter rost";
    cin>>rost;
}

void footballer::setweight()
{
    cout<<"\n Enter weight";
    cin>>weight;
}

void footballer::print()const
{
    cout<<"footballer:"<<surname<<"rost"<<rost<<"weight"<<weight<<"team"<<team;
}

///////////////////////////////////


attacking::attacking( unsigned short f, int k,char a, char b,float  * c,float * d):footballer(a,b,c,d)
{
    mastery=f;
    gol=k;
}


attacking::attacking(const attacking & A):footballer(A)
{
    mastery=A.mastery;
    gol=A.gol;
}
attacking::~attacking(){}

attacking & attacking:: operator=(const attacking & )
{
        if (this!=&A)
    {
        mastery=A.mastery;
        gol=A.gol;
    }
    return *this;
}


void attacking::setgol()
{
    gol++;
}

void attacking::print()const
{
    cout<<"footballer:"<<surname<<"mastery"<<mastery<<"gol"<<gol;
}


////////////////////////////////////////
quarterback::quarterback (int m, int n, char a, char b, float * c,float * d):footballer(a,b,c,d)
{     matches=m;
      victory=n;
}

quarterback::quarterback( const quarterback & A)
{
    mathes=A.matches;
    victory=A.victory;
}

quarterback::~quarterback(){}

quarterback & quarterback::  operator=(const quarterback & )
{
    if (this!=&A)
    {
        mathes=A.matches;
        victory=A.victory;
    }
    return *this;
}

void quarterback::mathes()
{
    mathes++;
}

void quarterback::victory()
{
    victory++;
}

void transform( const  attacking &)
{
  cout<<endl<<"enter mastersto quarterback";
  cin>>attacking.mastery;
}
помогите написать главную функцию ,у меня выдает ошибки я не могу понять их
1>g:\ооп\oop3\oop3\footballer.cpp(65) : error C2511: attacking::attacking(unsigned short,int,char,char,float *,float *): перегруженная функция-член не найдена в 'attacking'
1> g:\ооп\oop3\oop3\footballer.h(18): см. объявление 'attacking'
1>g:\ооп\oop3\oop3\footballer.cpp(140) : fatal error C1004: непредвиденное обнаружение конца файла
1>main.cpp
1>g:\ооп\oop3\oop3\main.cpp(7) : error C2228: выражение слева от ".print" должно представлять класс, структуру или объединение
1>g:\ооп\oop3\oop3\main.cpp(7) : error C2662: footballer:rint: невозможно преобразовать указатель 'this' из 'attacking (__cdecl *)(void)' в 'const footballer &'
1> Причина: невозможно преобразовать 'attacking (__cdecl *)(void)' в 'const footballer'
1> Для преобразования требуется второй оператор пользовательского преобразования или конструктор
1>g:\ооп\oop3\oop3\main.cpp(8) : error C2228: выражение слева от ".print" должно представлять класс, структуру или объединение
1>g:\ооп\oop3\oop3\main.cpp(9) : error C2228: выражение слева от ".transform" должно представлять класс, структуру или объединение
1>g:\ооп\oop3\oop3\main.cpp(11) : error C2228: выражение слева от ".print" должно представлять класс, структуру или объединение
1>Создание кода...
Pantera19 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070