のベクトルを変更し、私はこのように可変Eを宣言する:C++:C++プログラムでshare_ptr要素
shared_ptr<c_t> e = shared_ptr<c_t> (new c_t);
を次に、Eが初期化されます。
後半のプログラムで、私はこの機能を使用して、電子のサイズを変更したい:
e->change(4);
クラス
C_Tと機能
C_T ::変更は次のように定義されている
:
class c_t {
public:
vector<shared_ptr<double>> m;
void change(int n) {
vector<shared_ptr<c_double>> mm;
shared_ptr<double> m_buffer = make_shared<c_double>();
for(int i = 0; i < n; i++) {
m_buffer = 3.14 * i;
mm.push_back(m_buffer);
};
m = mm;
};
};
ただし、この方法は機能しません。 eを読み込むためにイテレータを使用すると、eの値はinfとなります。どうして?変更する方法e?
編集: スケールする実際、読むには、電子の値は、クラスC_Tは、この機能を使用しています。
void scaling(double factor) {
for (auto it = m.begin(); it != m.end(); ++it) {
m *= factor;
};
};
は、なぜあなたは '' c_double'とdouble'を混合していますか?彼らは同じタイプですか?なぜ違う名前になったのですか? – rozina
申し訳ありませんが、これは単なるダミーの例です。実際のクラスはもっと複雑です。 –
また、イテレータを使ってeを読むことはどういう意味ですか? eはコンテナに入っていますか?あなたがeを読むコードを私たちに教えてください。 ps:これがダミーの例であっても、それを完全なものにすることができます(http://stackoverflow.com/help/mcve) – rozina