vector.size () возвращает 0 все время - PullRequest
2 голосов
/ 15 апреля 2020

У меня есть следующий класс:

class MyVector{
public:
    MyVector(int num);
    virtual ~MyVector();
    int my_size();
private:
    vector<int> some_vector;
};

Функция конструктора и размера выглядит следующим образом:

MyVector::MyVector(int num) {
    vector <int> some_vector(num); 
}

int MyVector::my_size() {
    return this->some_vector.size(); 

Однако при запуске этих строк:

MyVector *Bul = new MyVector(5);
    cout << Bul->my_size() << endl;

Вывод равен 0. Может кто-нибудь объяснить, почему это происходит?

1 Ответ

9 голосов
/ 15 апреля 2020

Ваш конструктор создает локальную переменную, которая затеняет переменную-член

MyVector::MyVector(int num) {
    vector<int> some_vector(num); 
}

Вместо этого используйте список инициализации члена

MyVector::MyVector(int num)
  : some_vector(num)
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...