I don't know why it is doing this. I passed it as const and in the function I don't make any changes to the viable.

The "intersectionOfSets" function changes the class instance "empty"'s array "set"'s first position from 0 to 5383480.

Please correct me if my vocab is off, thanks for the help! :)

main.cpp

IntegerSet.cppCode:`#include <iostream>`

#include "IntegerSet.h"

using namespace std;

int main()

{

const int arraySize = 10;

int array[10] = {0,1,1,0,1,0,0,1,1,0};

IntegerSet five (10);

IntegerSet empty (10);

IntegerSet Union(10);

IntegerSet intersection(10);

IntegerSet arraySet (array, arraySize);

cout << "Empty Set:\n";

empty.printSet();

five.insertElement(5);

cout << "\n\nEmpty set with 5 added to set:\n";

five.printSet();

cout << "\n\nUnion of empty set and set with 5 in it:\n";

five.unionOfSets(empty,Union);

Union.printSet();

cout << "\n\n***Empty before:\n";

empty.printSet();

cout << "\n\nIntersection of empty set and set with 5 in it\n";

five.intersectionOfSets(empty, intersection); // problem ith empty changing here

intersection.printSet();

cout << "\n\n***Empty after:\n";

empty.printSet();

cout << "\n\nChecks if the set with 5 in it is equal to the empty set: (0 = false, 1 = true)\n";

cout << five.isEqual(empty);

five.deleteElement(5);

cout << "\n\nDeleted element 5:\n";

five.printSet();

cout << "\n\nChecks if the previous set with 5 with 5 just being taken away (empty) is equal to the empty set:(0 = false, 1 = true)\n";

cout << five.isEqual(empty);

cout << "\n\nOutput integer set that is predefined with an array {0,1,1,0,1,0,0,1,1,0}:\n";

arraySet.printSet();

return 0;

}

IntegerSet.hCode:`#include <iostream>`

#include "IntegerSet.h"

IntegerSet::IntegerSet(int tempSize)

{

size = tempSize;

set = new int[size];

for(int a = 0; a < size; a++)

set[a] = 0;

}

IntegerSet::IntegerSet(int arraySet[], int tempArraySize)

{

size = tempArraySize;

set = new int[size];

for(int a = 0; a < size; a++)

set[a] = arraySet[a];

}

IntegerSet::~IntegerSet()

{

delete [] set;

}

void IntegerSet::unionOfSets(const IntegerSet tempB, IntegerSet &newSet)

{

if(size == tempB.size)

{

for(int a = 0; a < size; a++)

{

if(set[a] == 1 || tempB.set[a] == 1)

newSet.set[a] = 1;

else

newSet.set[a] = 0;

}

}

else

std::cout << "Error. Sets being compared are not the same length.";

}

void IntegerSet::intersectionOfSets(const IntegerSet tempB, IntegerSet &newSet)

{

if(size == tempB.size)

{

for(int a = 0; a < size; a++)

{

if(set[a] == 1 && tempB.set[a] == 1)

newSet.set[a] = 1;

else

newSet.set[a] = 0;

}

}

else

std::cout << "Error. Sets being compared are not the same length.";

}

void IntegerSet::insertElement(int element)

{

if(element < size && element > -1 )

set[element] = 1;

else

std::cout << "Error. Inserted element is not in scope.\n";

}

void IntegerSet::deleteElement(int element)

{

if( element < size && element > -1 )

set[element] = 0;

else

std::cout << "Error. Inserted element is not in scope.\n";

}

void IntegerSet::printSet() const

{

for(int a = 0; a < size; a++)

{

if(set[a] == 1)

std::cout << a << " ";

else

std::cout << set[a] << " ";

}

}

bool IntegerSet::isEqual(const IntegerSet tempB) const

{

for(int a = 0; a < size; a++)

{

if(set[a] != tempB.set[a])

return false;

}

return true;

}

Code:`class IntegerSet`

{

private:

int *set;

int size;

public:

IntegerSet(int);

IntegerSet(int[], int);

~IntegerSet();

void unionOfSets(const IntegerSet tempB, IntegerSet &newSet);

void intersectionOfSets(const IntegerSet tempB, IntegerSet &newSet);

void insertElement(int);

void deleteElement(int);

void printSet() const;

bool isEqual(const IntegerSet tempB) const;

};