В своем конструкторе вы объявляете локальную переменную mVector
, которая скрывает члена класса с тем же именем.Таким образом, вы заполняете локальную переменную, а не члена класса.Вам нужно удалить локальную переменную:
template<class T> LinAlg<T>::LinAlg(int size)
{
mSize = size;
for (int i=0; i<mSize; i++)
{
mVector.push_back(0);
}
}
Теперь, как говорится, вам вообще не нужен цикл, так как std::vector
имеет метод resize()
, который может заполнить вектор значениями:
template<class T> LinAlg<T>::LinAlg(int size)
{
mSize = size;
mVector.resize(size); // <-- will set new elements to 0 by default
}
Альтернативно, вместо этого вы можете использовать собственный конструктор вектора, который делает то же самое:
template<class T> LinAlg<T>::LinAlg(int size)
: mVector(size) // <-- will set elements to 0 by default
{
mSize = size;
}
В любом случае, член mSize
является избыточным, так как std::vector
имеет собственный size()
метод, который вы можете использовать при необходимости.