/
info.h
89 lines (59 loc) · 1.33 KB
/
info.h
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
83
84
85
86
87
88
89
#ifndef INFO_H
#define INFO_H
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include "util.h"
using namespace std;
class FileStrBridge {
public:
FileStrBridge(const string& file);
~FileStrBridge();
string& getContent();
private:
string file, content;
};
class Info {
public:
//virtual ~Info() = 0;
protected:
virtual void transStrToProp(const string& infoStr) = 0;
virtual string transPropToStr() = 0;
};
class SimpleInfo : public Info {
public:
SimpleInfo(FileStrBridge* fsb);
~SimpleInfo();
void add(const string& oneInfo);
void del(const string& oneInfo);
void del(int no);
string getItem(int no);
int search(const string& oneInfo);
int getSize();
void shuffle();
protected:
void transStrToProp(const string& infoStr);
string transPropToStr();
FileStrBridge* fsb;
vector <string> itemList;
};
class ComplexInfo : public Info {
public:
ComplexInfo(FileStrBridge* fsb, const string& itemName, bool canAdd=false);
~ComplexInfo();
bool succeed();
void suicide();
protected:
string itemName;
FileStrBridge* fsb;
bool ok, canAdd, dead;
virtual void transStrToProp(const string& infoStr) = 0;
virtual string transPropToStr() = 0;
void construct();
void destruct();
private:
};
#endif