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
无关,实际上隐藏了它。