Как реализовать вызов функции правильно?
#include <iostream>
#include <list>
using namespace std;
class Date{
private:
int day, month, year;
public:
Date(int a, int b, int c):day(a), month(b), year(c){
};
};
template <typename T>
void SlianyeAndPrint(list<T> &lst, list<T> &lst1)
{
for (auto i = lst1.cbegin(); i != lst1.cend(); ++i) {
lst.insert(lst.cend(), *i);
};
list<int>::iterator itr1, itr2;
itr1=lst1.begin();
itr2=lst1.begin();
advance(itr2, lst1.size());
lst1.erase(itr1, itr2);
for (auto i = lst.cbegin(); i != lst.cend(); ++i){
cout<<*i<<endl;
};
};
int main()
{
list<int> Mylist = {1,2,3};
list<int> Mylist1 = {1,2,3};
SlianyeAndPrint(Mylist, Mylist1);
return 0;
}
Есть у меня класс Date с полями day, month, year, так же шаблонная функция. Первый вызов функции реализовать для одного из встроенных типов(вроде я это сделал). Второй - для моего класса. Как это правильно реализовать?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Дописать оператор <<, немного подправить функцию. Примерно так:
#include <iostream>
#include <list>
using namespace std;
class Date{
private:
int day, month, year;
public:
Date(int a, int b, int c):day(a), month(b), year(c){
};
friend ostream& operator<<(ostream&os,const Date& d)
{
return os << d.day << "." << d.month << "." << d.year;
}
};
template <typename T>
void SlianyeAndPrint(list<T> &lst, list<T> &lst1)
{
for (auto i = lst1.cbegin(); i != lst1.cend(); ++i) {
lst.insert(lst.cend(), *i);
};
typename list<T>::iterator itr1, itr2;
itr1=lst1.begin();
itr2=lst1.begin();
advance(itr2, lst1.size());
lst1.erase(itr1, itr2);
for (auto i = lst.cbegin(); i != lst.cend(); ++i){
cout<<*i<<endl;
};
};
int main()
{
list<int> Mylist = {1,2,3};
list<int> Mylist1 = {1,2,3};
SlianyeAndPrint(Mylist, Mylist1);
list<Date> mylist = {{1,5,1925},{22,6,2022}};
list<Date> mylist1 = {{19,5,1963},{12,4,1962}};
SlianyeAndPrint(mylist, mylist1);
return 0;
}