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