在编译时创建一个array2D类崩溃

时间:2015-06-14 06:00:23

标签: c++ memory

----------------------

重复的问题

1 个答案:

答案 0 :(得分:3)

在这些行中

array2D(int xRes, int yRes){
    float **xtable;

您正在声明一个局部变量。同名的类成员变量保持未初始化状态,稍后再使用它。

删除第二行。

此外,成员变量xResyRes也未初始化。

使用:

array2D(int xResIn, int yResIn) : xRes(xResIn), yRes(yResIn) {
   xtable = new float*[yRes];
   for(int i=0;i < yRes;i++) {
      xtable[i] = new float[xRes];
   }
}

另外,更改

void getSize(int &xRes, int &yRes){}

void getSize(int &xResOut, int &yResOut)
{
   xResOut = this->xRes;
   yResOut = this->yRes;
}

在展开此类时,请记住The Rule of Three并实现复制构造函数和复制赋值运算符。

array2D(array2D const& copy) { ... }
array2D& operator=(array2D const& rhs) { ... }