2010-05-04 3 views
0

У меня есть класс, и я хочу, чтобы создать массив из нескольких экземпляров, в частности, матрица класса:Проблема создания массива объектов C++

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; 
} 

Когда я компилирую с г ++ Я получаю следующее сообщение об ошибке:

 
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, но я не нашел ответа. Предположим, что есть проблема с моим конструктором.

ответ

6

Ваш Matrix (интермедиат, INT) конструктор имеет все стандартные-возможности аргументы, которые делают его в качестве вызываемым в качестве конструктора по умолчанию. Вы должны либо избавиться от конструктора по умолчанию, либо сделать так, чтобы был необходим хотя бы один из аргументов Matrix (int, int).

+0

@SB: Вы не можете пересылать конструкторы в C++. –

+0

wow другой мозг пробел .. ужасный совет удален. –

0

потребность ; после float **p

+0

Случайно удалил его при редактировании моего сообщения! Я думаю, что копирование и вставка не являются моей сильной стороной. – user331570

Смежные вопросы