Matrixクラスがあり、基本的な操作をオーバーラップしています
template<class T>
Matrix<T>::Matrix(unsigned rows, unsigned cols) :
rows_(rows), cols_(cols) {
index = 0;
data_.reserve(rows * cols);
}
template<class T>
Matrix<T> Matrix<T>::operator=(const Matrix<T>& m) {
rows_ = m.rows();
cols_ = m.cols();
index = 0;
data_ = m.data_;
return *this;
}
しかし、equal演算子を使用していると、奇妙な値が返されます。
Matrix<double> a(5, 5);
Matrix<double> b(2, 2);
a << 5, 2, 4, 5, 6, 1, 3, 1, 2, 5, 2, 5, 2, 7, 2, 9, 2, 1, 0.1, 0.43, 1, 0, 0, 0, 1;
a.print("a");
b = a;
b.print("B");
出力:
a
5 2 4 5 6
1 3 1 2 5
2 5 2 7 2
9 2 1 0.1 0.43
1 0 0 0 1
B
0 0 0 0 0
2.42092e-322 4.94066e-324 4.94066e-324 0 3.26083e-322
0 6.66322e-319 0 0 0
0 0 0 0 0
0 0 0 0 0
なんでこんな感じ?