У меня есть класс, и я хочу создать массив из нескольких экземпляров, в частности класс матрицы:
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’
Я провел поиск в Google, но не нашел ответа.Предположим, есть проблема с моим конструктором.