решил самую первую задачу в теме(person)
Только не получается конструировать обьект BadDude с помощью конструкторов PokerPlayer и Gunslinger(строки остаются пустыми)
classes.h
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| #ifndef CLASSES_H_
#define CLASSES_H_
#include <string>
class Person
{
protected:
std::string name,surname;
public:
Person(){};
Person(std::string n,std::string s):name(n),surname(s){};
~Person(){};
virtual void Set(std::string n,std::string s);
virtual void Show();
};
class Gunslinger:virtual public Person
{
public:
Gunslinger(){};
Gunslinger(std::string n,std::string s,unsigned short k):Person(n,s),stvol(k){};
void Set(std::string n,std::string s,unsigned short k);
virtual~Gunslinger(){};
virtual void Show();
double Draw();
protected:
unsigned short stvol;
};
class PokerPlayer:virtual public Person
{
public:
PokerPlayer(){};
PokerPlayer(std::string n,std::string s):Person(n,s){};
virtual~PokerPlayer(){};
int Draw();
void Show();
void Set(std::string n,std::string s);
};
class BadDude:public Gunslinger,public PokerPlayer
{
public:
BadDude(std::string n,std::string s,unsigned short k):PokerPlayer(n,s),Gunslinger(n,s,k){};
virtual~BadDude(){};
double Gdraw();
int Cdraw();
void Set(std::string n,std::string s,unsigned short k);
void Show();
};
#endif |
|
functions.cpp
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
| #include<iostream>
#include<string>
#include "classes.h"
#include<ctime>
//------------------------------------------------
//--------------------PERSON----------------------
//------------------------------------------------
void Person::Set(std::string n="Name",std::string s="Surname")
{
name=n;
surname=s;
}
void Person::Show()
{
std::cout<<"Name:"<<name<<"\n"<<"Surname:"<<surname<<"\n";
}
//------------------------------------------------
//--------------------GUNSLINGER------------------
//------------------------------------------------
void Gunslinger::Set(std::string n,std::string s,unsigned short k)
{
Person::Set(n,s);
stvol=k;
}
double Gunslinger::Draw()
{
double hours,minutes;
srand((unsigned)time(NULL));
hours=rand()%(24);
minutes=rand()%(59)+1;
minutes/=100;
double tim=hours+ minutes;
return tim;
}
void Gunslinger::Show()
{
Person::Show();
std::cout<<"Number of stvols:"<<stvol<<"\n";
std::cout<<"Time:"<<Draw()<<"\n";
}
//------------------------------------------------
//--------------------POKERPLAYER-----------------
//------------------------------------------------
int PokerPlayer::Draw()
{
srand((unsigned)time(NULL));
return rand()%(52)+1;
}
void PokerPlayer::Show()
{
Person::Show();
std::cout<<"Next card:"<<Draw()<<"\n";
}
void PokerPlayer::Set(std::string n,std::string s)
{
Person::Set(n,s);
}
//------------------------------------------------
//--------------------BADDUDE---------------------
//------------------------------------------------
int BadDude::Cdraw()
{
return PokerPlayer::Draw();
}
double BadDude::Gdraw()
{
return Gunslinger::Draw();
}
void BadDude::Set(std::string n,std::string s,unsigned short k)
{
name=n;
surname=s;
stvol=k;
}
void BadDude::Show()
{
std::cout<<"Name:"<<name<<"\n";
std::cout<<"Surname:"<<surname<<"\n";
std::cout<<"Number of stvols:"<<stvol<<"\n";
std::cout<<"Next card:"<<Cdraw()<<"\n";
std::cout<<"Time:"<<Gdraw()<<"\n";
} |
|
person.cpp
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| #include <iostream>
#include<string>
#include "classes.h"
int main()
{
std::string name,surname;
unsigned short type,k;
std::cout<<"Enter type:\n-1 for person\n-2 for gunslinger\n-3 for poker player\n-4 for bad dude\n";
std::cin>>type;
std::cout<<"Enter name\n";
std::cin>>name;
std::cout<<"Enter surname\n";
std::cin>>surname;
if(type==2 || type==4)
{
std::cout<<"Enter number of stvols\n";
std::cin>>k;
}
Person* pers;
switch(type)
{
case 1:{pers=new Person(name,surname);break;}
case 2:{pers=new Gunslinger(name,surname,k);break;}
case 3:{pers=new PokerPlayer(name,surname);break;}
case 4:{pers=new BadDude(name,surname,k);break;}
default:std::cout<<"Illegal type";
}
pers->Show();
std::cin.get();
std::cin.get();
} |
|
BadDude нормально работает,если заменить строку
C++ | 1
| BadDude(std::string n,std::string s,unsigned short k):PokerPlayer(n,s),Gunslinger(n,s,k){}; |
|
на
C++ | 1
| BadDude(std::string n,std::string s,unsigned short k){Set(n,s,k);}; |
|
в файле "classes.h"
Можете обьяснить плз,как конструировать BadDude с помощью конструкторов PokerPlayer и Gunslinger
0
|