次の問題があります。構造を作成しました。
struct Series : vector<Candle>
{
Security Sec;
int LookFor;
int TF;
int Corrector;
string ID;
int line;
Series(){};
Series (int _lookfor);
void Update();
};
コンストラクタ:
Series::Series (int _lookfor)
{
LookFor=_lookfor;
for (int i = 1; i<=LookFor; i++)
{
Candle cantype = Candle(i);
push_back(cantype);
}
}
したがって、このコンストラクターを呼び出して、キャンドル値でオブジェクトを埋めます。LookFor - ベクトル シリーズのローソクの数です。初期化後、このシリーズを更新したい(新しいキャンドルがさらにある場合は、最後のキャンドルを削除して、ベクターシリーズの先頭に新しいキャンドルを挿入したい)
void Series::Update()
{
if (size()==LookFor)
{
if (newer(cantype,c1))
{
Candle cantype = Candle(1);
Candle c1 = at(0);
pop_back();
emplace(begin(),cantype);
}
}
これらのシリーズのベクトルを初期化する必要があります。
ベクトル vec; vec.push_back(シリーズ(3));
そしてコンストラクターはその仕事をします、すべてがうまくいきます。しかし、私はそれらを更新します:
for (size_t x =0; x<=size()-1;x++) vec[x].Update();
問題があります。ベクターの変更を保存できません。Update メソッドではすべて問題なく、必要なろうそくをそれ自体に挿入しますが、メソッドは終了します - ベクトル (vec の各要素) の状態は変更されません。メソッドでは変更が見られますが、ベクトルがコンストラクターのようになった後、状態は同じままです。教えてください、私は何が間違っていますか?