Реализацией шаблонного класса с перегрузкой оператора+ и оператора<<
Учусь программировать:) написал програмку для реализации шаблонного класса, создал массив указателей с помощью unique_ptr. Не получается реализовать перегрузку оператора+ и оператора<<. Прочитал кучу примеров и в конец запутался.
#include <stdlib.h>
#include <iostream>
#include <locale>
#include <iomanip>
#include <cstdlib>
#include <clocale>
#include <conio.h>
#include<vector>
using namespace std;
template <class Rod> class MayClass {
Rod data;
Rod data1;
//MayClass* next;
public:
MayClass() { };
MayClass(Rod d);
~MayClass();
};
template <class Rod>MayClass <Rod> operator+(MayClass<Rod>& a,int V)
{
// Как должена быть прописана перегрузка operator+ не знаю
return;
}
template <class Rod> MayClass<Rod>::MayClass(Rod d)
{
data = d;
next = nullptr;
cout << " data ="<<data << "\n";
}
template <class Rod> MayClass<Rod>::~MayClass()
{
}
int main()
{
MayClass<int>start(1);
unique_ptr<MayClass <int>[]> P(new MayClass <int>[27]);
//unique_ptr< MayClass<char>> P(new MayClass<char>);
int i;
for (i = 1; i < 26; ++i)
{
*(P + i) = i;//ошибка здесь
//unique_ptr<char>SS(new char[50]);
cout << " data =" << P[i] << "\n";//ошибка здесь
}
return 0;
}
Ответы (1 шт):
Автор решения: KoVadim
→ Ссылка
Сделал минимальные правки, где то так
#include <iostream>
#include <iomanip>
template <class Rod> class MayClass {
Rod data;
Rod data1;
//MayClass* next;
public:
MayClass() { };
MayClass(Rod d) {
data = d;
//next = nullptr;
}
~MayClass() {}
Rod getData() const { return data;}
Rod getData1() const { return data1;}
};
template <class Rod>MayClass <Rod> operator+(MayClass<Rod>& a,int V)
{
// Как должена быть прописана перегрузка operator+ не знаю
// а только Вы и знате. Но может быть так
// Но это не точно
return MayClass<Rod>{a.getData1() + V};
}
template<class Rod>
std::ostream& operator<<(std::ostream& os, const MayClass<Rod>& r)
{
os << r.getData() << " " << r.getData1();
return os;
}
int main()
{
MayClass<int>start(1);
std::unique_ptr<MayClass <int>[]> P(new MayClass <int>[27]);
int i;
for (i = 1; i < 26; ++i)
{
//*(P + i) = i;//ошибка здесь - не пишите так по сишному. не нужно.
P[i] = i;
//unique_ptr<char>SS(new char[50]);
std::cout << " data =" << P[i] << "\n";//ошибка здесь
}
return 0;
}