-3
私はC++クラスのコンストラクタ、デストラクタ、およびメモリについて学習しています。私はクラス内のベクトルが欲しいです。私は、 "return magnitude - > at(dimension)"と書いたときにエラーが発生し続けます; "このコードに何か問題はありますか?一意のポインタクラスメンバー
編集: 申し訳ありませんが、エラーが "生のポインタの代わりにユニークなポインタに適用する"でした。これはClionからのものですが、おそらくIDEが間違っていますか?
エラー以外は、主にスマートポインタでラップするので、メモリリークはありませんか、それとも不可能ですか?デストラクタは常に呼び出されますか(残念ながら、デストラクタについてはまだ学んでいます)。
#include <iostream>
#include "EuclideanVector.h"
#include "../catch.hpp"
#include <memory>
namespace evec{
class EuclideanVector{
public:
//constructors
EuclideanVector(): EuclideanVector(1){};
EuclideanVector(unsigned int size): magnitudes(std::make_unique(new std::vector<double>(size,0.0))){}
double get(int dimension){
return magnitudes->at(dimension);
}
private:
std::unique_ptr<std::vector<double>> magnitudes;
};
}
正確にはどのようなエラーですか? – HolyBlackCat
正確なエラーメッセージとは何ですか?正確な問題を再現する[MCVE]を提供してください。 – user0042
ここで 'unique_ptr'を使う必要はありません。 'std :: vector'自体は通常非常に小さく(おそらく12バイト程度)、その内容をヒープに格納します。 – HolyBlackCat