Не знаю касательно корректности алгоритма, но PVS-Studio обнаруживает 4 ошибки, из-за которых уже и так всё работает не так как надо.
SetOfNumb(int a[]) {
size = sizeof(a)-1;
V511 The sizeof() operator returns size of the pointer, and not of the array, in 'sizeof (a)' expression. consoleapplication2017.cpp 37
Оператор sizeof вычислят здесь размер указателя, а не массива. В результате, переменная size всегда будет равна 3 в 32-битной программе или 7 в 64-битной программе.
Аналогично здесь:
size = sizeof(a);
V511 The sizeof() operator returns size of the pointer, and not of the array, in 'sizeof (a)' expression. consoleapplication2017.cpp 46
И здесь:
for (int i = 0, j = 0; i < sizeof(temp.arr); i++) {
V604 It is odd that the number of iterations in the loop equals to the size of the 'temp.arr' pointer. consoleapplication2017.cpp 88
Ещё происходит ошибка копирования:
n = z;
V1002 The 'SetOfNumb' class, containing pointers, constructor and destructor, is copied by the automatically generated operator=. consoleapplication2017.cpp 140
Класс SetOfNumb сложный, выделяет память. Но при этом отсутствует operator =. В результате просто копируются члены класса, что приведёт к двойному освобождению памяти.