I am encountering a problem that I am sure is small but when I try to run my program it states - push_back(T &):cannot convert argument 1 from 'Savings*' (or Checkings*) to 'Account *&
.
It works if I remove & from the push_back
parameter but I don't understand what the difference is when you try to pass by reference rather than copy. Shouldn't it work the same?
I have attached the code where the error begins in the source.cpp file and the push_back
function in MyVector.h.
source.cpp:
MyVector<Account*> acc;
acc.push_back(new Savings(new Person("Bilbo Baggins", "43 Bag End"), 1, 500, 0.075));
acc.push_back(new Checkings(new Person("Wizard Gandalf", "Crystal Palace"), 2, 1000.00, 2.00));
acc.push_back(new Savings(new Person("Elf Elrond", "Rivendell"), 3, 1200, 0.050));
MyVector.h:
template<class T>
void MyVector<T>::push_back(T& n)
{
if (vCapacity == 0)
{
vCapacity++;
T* tmp = new T[vCapacity];
delete[] vArray;
vArray = tmp;
}
if (vSize >= vCapacity)
{
grow();
}
vArray[vSize] = n;
vSize++;
}