1

.hファイルでベクトルを定義して、ublasベクトルに値を初期化/割り当てようとしています。

someClass{
    ublas::vector<double> *L;
} ;

次に、私の.cppファイルで:

someClass::someClass()
{
    L = new ublas::vector<double>[4];
    L->data()[0] = 1;
}

コードは正常にコンパイルされますが、実行すると、.cppファイルの最後の行でエラーが発生します。おそらく私が見逃している非常に単純なものがありますが、私は何を理解することができません...

よろしくお願いします!:)

4

1 に答える 1

1

それぞれサイズがゼロの4つのublas::vectorの配列を作成しました。空のベクトルの最初の要素に割り当てると、例外がスローされます。

書くつもりでしたか

L = new ublas::vector<double>(4); 

代わりは?

newとpointerの使用には疑問があることは言うまでもありませんが、ほとんどの場合、メンバーオブジェクトの方が適切です。

class someClass {
    ublas::vector<double> L;
 public:
     someClass() : L(4) {
          L[0] = 1;
     }
};
于 2012-05-10T20:38:47.887 に答える