Перегрузка операторов сложения, вычитания и умножения для объектов класса

Есть класс тестовых вопросов. Объявляются 3 объекта этого класса. В 1 объект записывается первый блок вопросов значения записываются в 1 массив, во 2 - второй блок вопросов записывается во 2 массив, а в 3 объект записывается результат операций над объектами. Как вообще можно реализовать операцию слияния, вычитания и умножения именно для объектов класса ? Сравнение идет по названию вопроса. Должно быть что-то вроде если идет операция сложения, то в 3 объект класса записываются все значения первого массива+ значения 2 массива,которых нет в первом. Если идет операция вычитания, то в 3 объект записываются все значения первого массива которых нет во 2.

Пытался реализовать перегрузку оператора сложения, но вообще не понял как она реализуется. Вот код, кто может помочь с этим огромное спасибо.

#include <iostream>
struct card 
{
    char quest[512];
    char fst[512];
    char scd[512];
    char thd[512];
    char foh[512];
    char fth[512];
    int num;
    int balls;
};
 
struct card M[30];
struct card S[30];
struct card tmp;
int i, j, n, k;
using namespace std;
 
 
class Test : public card
{
public:
    void otch(card* M, int& N)
    {
 
 
        
        cout << '\n';
        int c = 1;
 
        for (int i = 0; i < N; i++) {
            cout << c << "-ыйВопрос : " << M[i].quest << endl;
            cout << "1-ый вариант ответа: " << M[i].fst << endl;
            cout << "2-ый вариант ответа: " << M[i].scd << endl;
            cout << "3-ый вариант ответа: " << M[i].thd << endl;
            cout << "4-ый вариант ответа: " << M[i].foh << endl;
            cout << "5-ый вариант ответа: " << M[i].fth << endl;
            cout << "Правильный Ответ: " << M[i].num << endl;
            c++;
        }
 
 
        cout << '\n';
        system("pause");
 
 
    }
 
 
 
    void add(card* M, int& N)
    {
        system("CLS");
        int c = 1;
 
        for (int i = 0; i < N; i++)
        {
            cout << "Введите данные о " << c << " вопросе. \n";
            cout << "Вопрос\n";
            while (*M[i].quest == 0) {
                cin.getline(M[i].quest, 512);
            }
            cout << "1 вариант ответа\n";
            cin.getline(M[i].fst, 512);
            cout << "2 вариант ответа\n";
            cin.getline(M[i].scd, 512);
            cout << "3 вариант ответа\n";
            cin.getline(M[i].thd, 512);
            cout << "4 вариант ответа\n";
            cin.getline(M[i].foh, 512);
            cout << "5 вариант ответа\n";
            cin.getline(M[i].fth, 512);
            cout << "Номер правильного ответа\n";
            cin >> M[i].num;
            cin.get();
            cout << endl;
            c++;
        }
        cout << "Введено максимальное кол-во записей.\n";
        system("pause");
        system("CLS");
    }
 
 
 
};
 
 ```
 Test operator+(Test p1,Test p2) {
        return new Test(p1.value + p2.value);
    };
 ```
  
 
 
int main()
{
    setlocale(LC_ALL, "");
 
 
    Test p1;
    Test p2;
    Test p3;
 
 
    int N, K,v;
    cout << "Введите размер Теста 1 :\n";
    cin >> N;
    cout << "Введите размер Теста 2 :\n";
    cin >> K;
    system("CLS");
 
 
    p1.add(M, N);
    p2.add(S, K);
    system("CLS");
 
 
    cout << "Первый Тест: \n";
    p1.otch(M, N);
    system("CLS");
    cout << "Второй Тест: \n";
    p1.otch(S, K);
    system("CLS");
 
 
    for (;;)
    {
        
        printf("\n[1 - слияние двух тестовых наборов]");
        printf("\n[2 - разность двух тестовых наборов]");
        printf("\n[3 - пересечение двух тестовых наборов]");
        printf("\n[0 - Exit]");
        printf("\n Выберите номер в меню:");
        std::cin >> v;
        switch (v)
        {
        case 1:
            `c=p1+p2;`
            
            
            break;
        case 2:
            break;
        case 3:
            break;
        case 0:exit(1);
        default:
            cout << "Выберите существующий пункт меню." << endl;
            system("pause");
            break;
        }
    }
    system("pause");
 
    system("PAUSE");
}

Ответы (0 шт):