简体   繁体   English

vector.size() 一直返回 0

[英]vector.size() returns 0 all the time

I have the following class:我有以下 class:

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

The constructor and size function look like this:构造函数和大小 function 如下所示:

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

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

However when running these lines:但是,在运行这些行时:

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

The output is 0. Can anyone explain why is this happening? output 为 0。谁能解释为什么会这样?

Your constructor makes a local variable that shadows your member variable您的构造函数创建一个局部变量来隐藏您的成员变量

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

Instead use the member initialization list而是使用成员初始化列表

MyVector::MyVector(int num)
  : some_vector(num)
{
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM