我有两个类,一个必须更改另一个类的向量的值.这是第一个要更改的向量X所在的位置:
Grid.hpp
class Grid{
public:
vector<double> X;
}
Run Code Online (Sandbox Code Playgroud)
另一个类引用了第一个类,并且有一个应该修改X的函数:
BC.hpp
class BC{
public:
Grid &grid;
BC(Grid grid);
~BC(){};
void add_to_X(int n_values);
}
Run Code Online (Sandbox Code Playgroud)
BC.cpp
BC::BC(Grid grid): grid(grid){}
void BC::add_to_X(int n_values){
vector<double> new_X;
for(int i=0; i<n_values; i++){
new_X.push_back(0.1);
}
grid.X = new_X;
Run Code Online (Sandbox Code Playgroud)
main.cpp中
int main(){
// grid and bc classes initialized above
bc.add_to_X(10);
}
Run Code Online (Sandbox Code Playgroud)
当我运行main.cpp上面的时候,我得到了错误malloc: *** error for object 0x7fb6294027b0: pointer being freed was not allocated.我也试过另一个解决方案.我在类中写了一个函数grid,它将新的X向量从类网格本身分配给向量,但我仍然有同样的错误.如果我注释掉该行,grid.X = new_X;则错误消失.上面的代码有什么问题?什么是正确的编码方式?