 			cudaMemset(data_, 0, size_ * sizeof(float));
 	}
 	
+	__device__ __host__ float& get(const unsigned int &x) const {
+		return data_[x];
+	}
+	
 	__device__ __host__ float& operator[](const unsigned int &x) const {
 		return data_[x];
 	}

		
		public:
			__device__ __host__ MatrixRow(const Matrix &m, const unsigned int &x) : m_(m), x_(x) {}
			__device__ __host__ float& operator[](const unsigned int &y) const {
				return m_. data_[x_ * m_.width_ + y];
			}
	};
	
	__device__ __host__ MatrixRow operator[](const unsigned int &x) const {
		return MatrixRow(*this, x);
	}

		std::cout << "[" << std::endl;
		for (unsigned int i(0) ; i != height_ ; i++) {
			for (unsigned int j(0) ; j != width_ ; j++) {
				std::cout << " " << this->get(i, j);
			}
			std::cout << std::endl;
		}
