创建对象数组C ++的问题

时间:2010-05-04 16:28:33

标签: c++ arrays matrix compiler-errors

我有一个类,我想创建一个数字实例的数组,特别是矩阵类:

class Matrix {    
public:
    Matrix(int sizeX, int sizeY);
    Matrix();
    ~Matrix();
    ....//omiting the rest here
private:
    int dx, dy;
    float **p
    void allocArrays() {
        assert(dx>0);
        assert(dy>0);
        p = new float*[dx];
        for (int i = 0; i < dx; i++){
            p[i] = new float[dy]; 
        }
    }
};
Matrix::Matrix(int sizeX=1, int sizeY=1)
: dx(sizeX),dy(sizeY)  {
    allocArrays();
    for (int i = 0; i < dx; i++)    {
        for (int j = 0; j < dy; j++) {
            p[i][j] = 0;
        }
    }
}


Matrix::Matrix(const Matrix& m) : dx(m.dx), dy(m.dy) {
    allocArrays();
    for (int i=0; i<dx; ++i) {
        for (int j=0; j<dy; ++j) {
            p[i][j] = m.p[i][j];
        }
    }
}

Matrix::~Matrix() {
    for (int i = 0; i < dx; i++) {
        delete [] p[i]; 
    }
    delete [] p;
    p = 0;
}

我的主要代码是:

int main()
{
    Matrix myArray[2] = { Matrix(6,6)};
    return 0;
}

当我用g ++编译时,我收到以下错误:

matrixTesting.cc: In function ‘int main()’:
matrixTesting.cc:197: error: call of overloaded ‘Matrix()’ is ambiguous
matrixTesting.cc:11: note: candidates are: Matrix::Matrix()
matrixTesting.cc:44: note:                 Matrix::Matrix(int, int)
matrixTesting.cc:197: warning: unused variable ‘myArray’

我做了一些谷歌搜索,但我没有找到答案。假设我的构造函数有问题。

2 个答案:

答案 0 :(得分:6)

你的Matrix(int,int)构造函数具有所有可默认的参数,这使得它可以作为默认构造函数调用。您应该删除默认构造函数,或者使其至少需要Matrix(int,int)的一个参数。

答案 1 :(得分:0)

;

之后需要float **p