我有一个类,我想创建一个数字实例的数组,特别是矩阵类:
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’
我做了一些谷歌搜索,但我没有找到答案。假设我的构造函数有问题。
答案 0 :(得分:6)
你的Matrix(int,int)构造函数具有所有可默认的参数,这使得它可以作为默认构造函数调用。您应该删除默认构造函数,或者使其至少需要Matrix(int,int)的一个参数。
答案 1 :(得分:0)
在;
float **p