Реализацией шаблонного класса с перегрузкой оператора+ и оператора<<

Учусь программировать:) написал програмку для реализации шаблонного класса, создал массив указателей с помощью 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;
}
→ Ссылка