我正在创建cpScalar.hpp和cpVector.hpp文件,并且在调用cpVector的getSize()方法时遇到错误。下面是我的代码。
在main中删除v2会将v1的输出更改为4,但是使用v2会导致输出奇怪。我尝试将return this-> size更改为return arr.size(),但它提供了类似的输出。
有人可以告诉我为什么会发生这种情况,如何解决它,还是可以给我提供指向指向此页面的指令链接?我不知道这种问题叫什么,所以我什至无法搜索类似的问题。
谢谢。
//cpVector.hpp
private:
vector<cpScalar> arr;
unsigned int size;
public:
cpVector(cpScalar sarr[], unsigned int size2){ // this constructor is fixed
arr.resize(size2);
this->size = size2;
for (int i =0; i<size2; i++){
arr[i] = sarr[i];
}
};
unsigned int getSize(){
return this->size;
};
and at main:
int main()
{
cpScalar s_arr[4];
for(int i = 0; i < 4; i++){
s_arr[i] = cpScalar(i+1); //1, 2, 3, 4
}
cpVector v1(s_arr, 4);
cpScalar s_arr2[4];
for(int i = 4; i < 8; i++){
s_arr2[i] = cpScalar(i+1); //5,6,7,8
}
cpVector v2(s_arr2, 4);
cout << v1.getSize() << endl; // prints 1097313485
cout << v2.getSize() << endl; // prints 4
}
输出为:
1097313485 \ n 4
删除v2后的输出仅为4