数値計算用のカスタム ベクトルと行列クラスを作成しています。
行列の各行と列をベクトルとして扱いたい。また、余分なメモリを使いたくないので、マトリックス内のデータを直接使用するVectorViewクラスを作成しました(GSLライブラリのように)。これが私のマトリックスクラスの概要です。
class Matrix{
priavte:
T data[];
....
public:
VectorView row(int n);
VectorView colum(int n);
};
そして、VectorView を使用する関数を定義します。
myFunc(VectorView& v);
私の VectorView クラスには余分なデータがあるため、VectorView を参照として使用してメモリを節約したいと考えています。
しかし、このような関数を呼び出すと問題が発生しました。
Matrix m;
...
...
myFunc(m.row(i));
問題は、 m.row(i) が一時オブジェクトを返すため、参照型を使用して処理できないことです。しかし
auto v = m.row(i);
myFunc(v);
まったく同じですが、vを使用する理由が明確ではありませんが、これはエラーにはなりません。上記のものを使用したいです。この種の問題に対する素晴らしい解決策はありますか?