LW4: Class Template. Parametrize BookItem with a String type.

This commit is contained in:
Kolan Sh 2021-03-28 23:03:38 +03:00
parent ca3125dbd4
commit 581d21007a
2 changed files with 17 additions and 16 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)
{
BookItem* spaceItem = new BookItem;
BookItem<string>* spaceItem = new BookItem<string>;
spaceItem->_sFirstName = sFirstName;
spaceItem->_sLastName = sLastName;
spaceItem->_sPhoneNumber1 = sPhoneNumber1;
@ -33,7 +33,7 @@ int CBookItems::SetNewValueToItem(string sFirstName, string sLastName, string sP
{
if (nNumOfItem == i)
{
BookItem spaceItem;
BookItem<string> spaceItem;
spaceItem._sFirstName = sFirstName;
spaceItem._sLastName = sLastName;
spaceItem._sPhoneNumber1 = sPhoneNumber1;
@ -72,9 +72,9 @@ int CBookItems::GetItem(int nNumOfItem, string& sFirstName, string& sLastName, s
}
}
const CBookItems::BookItem& CBookItems::GetItem(int nNumOfItem)
const CBookItems::BookItem<string>& CBookItems::GetItem(int nNumOfItem)
{
if (nNumOfItem < 0 || nNumOfItem > _aItems.size()) return CBookItems::BookItem();
if (nNumOfItem < 0 || nNumOfItem > _aItems.size()) return CBookItems::BookItem<string>();
return _aItems[nNumOfItem];
}
@ -309,7 +309,7 @@ int CBookItems::LoadItems(string sNameOfFile)
}
std::ostream& operator<<(std::ostream& s, const CBookItems::BookItem& item)
std::ostream& operator<<(std::ostream& s, const CBookItems::BookItem<string>& item)
{
s << item._sFirstName << " " << item._sLastName << ": " << item._sPhoneNumber1;
if (item._sPhoneNumber2 != "")
@ -318,7 +318,7 @@ std::ostream& operator<<(std::ostream& s, const CBookItems::BookItem& item)
return s;
}
std::istream& operator>>(std::istream& s, CBookItems::BookItem& item)
std::istream& operator>>(std::istream& s, CBookItems::BookItem<string>& item)
{
s >> item._sFirstName >> item._sLastName >> item._sPhoneNumber1 >> item._sPhoneNumber2;
return s;

View File

@ -20,18 +20,19 @@ using namespace std;
class CBookItems
{
public:
struct BookItem
template<class T>
class BookItem
{
private:
string _sFirstName;
string _sLastName;
string _sPhoneNumber1;
string _sPhoneNumber2;
T _sFirstName;
T _sLastName;
T _sPhoneNumber1;
T _sPhoneNumber2;
public:
BookItem()
{
}
~BookItem()
virtual ~BookItem()
{
}
@ -39,13 +40,13 @@ public:
/**
*Переопределяет операторы вывода/вывода
*/
friend std::ostream& operator<<(std::ostream& s, const BookItem& item);
friend std::istream& operator>>(std::istream& s, BookItem& item);
friend std::ostream& operator<<(std::ostream& s, const BookItem<string>& item);
friend std::istream& operator>>(std::istream& s, BookItem<string>& item);
friend CBookItems;
};
vector<BookItem> _aItems;
vector<BookItem<string> > _aItems;
public:
@ -89,7 +90,7 @@ public:
/**
*Возвращает элемент телефонного справочника
*/
const BookItem& GetItem(int nNumOfItem);
const BookItem<string>& GetItem(int nNumOfItem);
//===============================================================================
/**