Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类中向量成员的一种奇怪现象_C++_Vector - Fatal编程技术网

C++ 类中向量成员的一种奇怪现象

C++ 类中向量成员的一种奇怪现象,c++,vector,C++,Vector,包括所有头文件 class Test{ public: vector<int> vector_int(10); Test(int num); ~Test(); }; Test::Test(int num){ cout << "constructor employed" <<endl; vector<int> vector_int; for (int i = 0; i < num; i++){

包括所有头文件

class Test{ 
public:
    vector<int> vector_int(10);
    Test(int num);
    ~Test();
};

Test::Test(int num){
    cout << "constructor employed" <<endl;
    vector<int> vector_int;
    for (int i = 0; i < num; i++){
        vector_int.push_back(i);
    }
    cout<<"The size is " << vector_int.size()<<endl;
}

int main(){
    int num = 10;
    Test* a = new Test(10);
    cout<< a->vector_int.size()<< " is the size"<<endl;
    return 0;
}
类测试{
公众:
向量_int(10);
测试(int-num);
~Test();
};
测试::测试(int num){

cout您正在使用构造函数中同名的局部变量对类成员变量
vector\u int
进行阴影处理


从构造函数中删除行
vector-vector\u int;
,它应该可以正常工作。

我认为正确的词是“隐藏”而不是“覆盖”。或者还有更好的词。@MooingDuck:“隐藏”事实上,如果您使用
gcc-Wshadow
它将标记此错误。@JohnZwinck:Agreed,fixedTHX!是因为向量成员在声明时分配了空间吗?@ydxu您完全没有抓住要点。
vector-vector-int;
不应在构造函数中声明。它提供了
vector-int,它与类成员变量
vector\u int
无关,实际上隐藏了它。