自作の行列クラスを継承するさいにエラーがでます
現在、c++の学習で、自作の基底行列クラスMatrixを作成し、このクラスを継承して新たにlduMatrixを作成する事を考えています。
が、継承し、
lduMatrix a( 3, 3);
a = 3;
とすると、
main.C:13: warning: passing ‘double’ for argument 1 to ‘lduMatrix::lduMatrix(int)’
というエラーがでてコンパイルできずにいます。その一方で、
lduMatrix a(3,3, 3.14);
とするとコンパイルはとおり、lduMatrix行列の各要素(a[1][1]など)の値をプリントさせると、[[3.14]]の値が入っていることを確認しております。
どこが間違っているのか御指導いただけると幸いです。
以下、クラスの中身です。よろしくおねがいします。
《Class: Matrix》
#include <iostream>
class Matrix{
private:
//! Size of row and column in Matrix
int row_, col_;
//! Row pointers
double** m_;
//! Allocate function for row-pointers
void allocate();
public:
Matrix();
//! Constructor with given matrix size
Matrix( const int, const int );
//! Constructor with given matrix size and value fro all elements
Matrix( const int, const int, const double );
//! Destructor
~Matrix();
・・・省略・・・
double* operator[]( const int );
double* operator[]( const int ) const ;
void operator=( const double );
};
/* Private functions *********************************************** */
void Matrix::allocate() {
m_ = new double* [row_];
m_[0] = new double [row_*col_];
for ( int i=1; i<row_; i++ ){
m_[i] = m_[i-1] + col_;
}
}
/* Destructor ****************************************************** */
Matrix::~Matrix(){
delete[] m_[0];
delete[] m_;
}
/* Constructors **************************************************** */
// NULL constructor
Matrix::Matrix() : row_(0), col_(0), m_(NULL) {}
// Constructor with given matrix size
Matrix::Matrix( const int row, const int col ) : row_(row), col_(col) {
allocate();
}
// Constructor with given matrix size and value for all elements
Matrix::Matrix( const int row, const int col, const double s ): row_(row), col_(col) {
allocate();
double* m = m_[0];
for ( int i=0; i<row_*col_; i++ ){
m[i] = s;
}
}
《省略》
/* Member operators ************************************************ */
double* Matrix::operator[]( const int i ){
return m_[i];
}
void Matrix::operator=( const double t ){
double* m = m_[0];
int nm = row_*col_;
for ( int i=0; i<nm; i++ ) {
m[i] = t;
}
}
《Class: lduMatrix》
class lduMatrix : public Matrix{
public:
lduMatrix();
lduMatrix( const int );
lduMatrix( const int, const double );
};
lduMatrix::lduMatrix() {}
lduMatrix::lduMatrix( const int mSize ) : Matrix( mSize, mSize, 0.0 )
{}
lduMatrix::lduMatrix( const int mSize, const double s ) : Matrix( mSize, mSize, s )
{}