小编Mat*_*ani的帖子

修改另一个类的矢量成员时出错

我有两个类,一个必须更改另一个类的向量的值.这是第一个要更改的向量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;则错误消失.上面的代码有什么问题?什么是正确的编码方式?

c++ vector

1
推荐指数
1
解决办法
41
查看次数

标签 统计

c++ ×1

vector ×1