Перегрузка операторов сложения, вычитания и умножения для объектов класса
Есть класс тестовых вопросов. Объявляются 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");
}