Compare commits

...

2 Commits
LW4 ... master

3 changed files with 42 additions and 27 deletions

View File

@ -8,7 +8,7 @@ void CBookItems::CreateNewItem(string sFirstName, string sLastName, string sPhon
void CBookItems::CreateNewItem(string sFirstName, string sLastName, string sPhoneNumber1, string sPhoneNumber2) void CBookItems::CreateNewItem(string sFirstName, string sLastName, string sPhoneNumber1, string sPhoneNumber2)
{ {
BookItem<string>* spaceItem = new BookItem<string>; BookItem* spaceItem = new BookItem;
spaceItem->_sFirstName = sFirstName; spaceItem->_sFirstName = sFirstName;
spaceItem->_sLastName = sLastName; spaceItem->_sLastName = sLastName;
spaceItem->_sPhoneNumber1 = sPhoneNumber1; spaceItem->_sPhoneNumber1 = sPhoneNumber1;
@ -33,7 +33,7 @@ int CBookItems::SetNewValueToItem(string sFirstName, string sLastName, string sP
{ {
if (nNumOfItem == i) if (nNumOfItem == i)
{ {
BookItem<string> spaceItem; BookItem spaceItem;
spaceItem._sFirstName = sFirstName; spaceItem._sFirstName = sFirstName;
spaceItem._sLastName = sLastName; spaceItem._sLastName = sLastName;
spaceItem._sPhoneNumber1 = sPhoneNumber1; spaceItem._sPhoneNumber1 = sPhoneNumber1;
@ -72,9 +72,9 @@ int CBookItems::GetItem(int nNumOfItem, string& sFirstName, string& sLastName, s
} }
} }
const CBookItems::BookItem<string>& CBookItems::GetItem(int nNumOfItem) const CBookItems::BookItem& CBookItems::GetItem(int nNumOfItem)
{ {
if (nNumOfItem < 0 || nNumOfItem > _aItems.size()) return CBookItems::BookItem<string>(); if (nNumOfItem < 0 || nNumOfItem > _aItems.size()) return CBookItems::BookItem();
return _aItems[nNumOfItem]; return _aItems[nNumOfItem];
} }
@ -309,7 +309,7 @@ int CBookItems::LoadItems(string sNameOfFile)
} }
std::ostream& operator<<(std::ostream& s, const CBookItems::BookItem<string>& item) std::ostream& operator<<(std::ostream& s, const CBookItems::BookItem& item)
{ {
s << item._sFirstName << " " << item._sLastName << ": " << item._sPhoneNumber1; s << item._sFirstName << " " << item._sLastName << ": " << item._sPhoneNumber1;
if (item._sPhoneNumber2 != "") if (item._sPhoneNumber2 != "")
@ -318,8 +318,17 @@ std::ostream& operator<<(std::ostream& s, const CBookItems::BookItem<string>& it
return s; return s;
} }
std::istream& operator>>(std::istream& s, CBookItems::BookItem<string>& item) std::istream& operator>>(std::istream& s, CBookItems::BookItem& item)
{ {
s >> item._sFirstName >> item._sLastName >> item._sPhoneNumber1 >> item._sPhoneNumber2; s >> item._sFirstName >> item._sLastName >> item._sPhoneNumber1 >> item._sPhoneNumber2;
return s; return s;
}
const string CBookItems::BookItem::to_string() const
{
string str = _sFirstName + " " + _sLastName + ": " + _sPhoneNumber1;
if (_sPhoneNumber2 != "")
str += ", " + _sPhoneNumber2;
return str;
} }

View File

@ -21,32 +21,44 @@ class CBookItems
{ {
public: public:
template<class T> template<class T>
class BookItem class BaseBookItem
{ {
private: protected:
T _sFirstName; T _sFirstName;
T _sLastName; T _sLastName;
T _sPhoneNumber1; T _sPhoneNumber1;
T _sPhoneNumber2; T _sPhoneNumber2;
public: public:
BookItem() BaseBookItem()
{ {
} }
virtual ~BookItem() virtual ~BaseBookItem()
{ {
} }
virtual const string to_string() const = 0;
};
//=============================================================================== class BookItem : BaseBookItem<string>
/** {
*Ïåðåîïðåäåëÿåò îïåðàòîðû âûâîäà/âûâîäà public:
*/ BookItem()
friend std::ostream& operator<<(std::ostream& s, const BookItem<string>& item); {
friend std::istream& operator>>(std::istream& s, BookItem<string>& item); }
virtual ~BookItem()
{
}
//===============================================================================
/**
*Ïåðåîïðåäåëÿåò îïåðàòîðû âûâîäà/âûâîäà
*/
friend std::ostream& operator<<(std::ostream& s, const BookItem& item);
friend std::istream& operator>>(std::istream& s, BookItem& item);
friend CBookItems; friend CBookItems;
}; const string to_string() const;
};
vector<BookItem<string> > _aItems; vector<BookItem> _aItems;
public: public:
@ -90,7 +102,7 @@ public:
/** /**
*Âîçâðàùàåò ýëåìåíò òåëåôîííîãî ñïðàâî÷íèêà *Âîçâðàùàåò ýëåìåíò òåëåôîííîãî ñïðàâî÷íèêà
*/ */
const BookItem<string>& GetItem(int nNumOfItem); const BookItem& GetItem(int nNumOfItem);
//=============================================================================== //===============================================================================
/** /**

View File

@ -86,13 +86,7 @@ void CConsoleUI::FindItem(CBookItems& CPhoneBook)
for (int i = 0; i < nNumOfDesirvedItems.size(); i++) for (int i = 0; i < nNumOfDesirvedItems.size(); i++)
{ {
string sFName = " "; cout << 1 + i << ". " << CPhoneBook.GetItem(nNumOfDesirvedItems.at(i)).to_string() << endl;
string sLName = " ";
string sNum1 = " ";
string sNum2 = " ";
CPhoneBook.GetItem(nNumOfDesirvedItems.at(i), sFName, sLName, sNum1, sNum2);
cout << 1 + i << ". " << sFName << " " << sLName << ": " << sNum1 << ", " << sNum2 << endl;
} }
} }