PART OF MY VECTOR CLASS
class CVector
{
friend ostream &operator<<(ostream& output, const CVector& vec);
public:
CVector()
{
sPtr = new char[10];
size = 0;
capacity = 10;
}
CVector(const CVector &vec)
{
size = vec.size;
capacity = vec.capacity;
sPtr = new char[size];
cout << "copy constructor" << endl;
for (size_t i = 0; i < size; i++)
{
sPtr[i] = vec.sPtr[i];
}
}
Main Function
CVector veca;
cout << veca.getCapacity() << endl;
cout << veca.getSize() << endl;
veca.push_back('H');
veca.push_back('e');
veca.push_back('l');
veca.push_back('l');
veca.push_back('o');
cout << "Add five elements:Hello" << endl << "result:" << veca << " size:" << veca.getSize() << " capacity:" << veca.getCapacity()<<endl;
CVector vecb,vecc;
vecb.push_back('H');
vecb.push_back('i');
vecc = vecb;
After this code(vecc = vecb),the issue happend.I think something went wrong >with copyconstructor but i cannot figure out what's wrong
push_back function
void push_back(char c)
{
if (size == capacity-1)
{
char* temp = new char[2 * capacity];
for (size_t i = 0; i < capacity; i++)
{
temp[i] = sPtr[i];
}
delete[] sPtr;
capacity *= 2;
sPtr = temp;
}
sPtr[size] = c;
size++;
}
Can I assign a *temp local pointer to the *sPtr(pointer to array for my vector)