을 저장할 수 없습니다내가 다음 문제가있는 구조의 내용
Series::Series (int _lookfor)
{
LookFor=_lookfor;
for (int i = 1; i<=LookFor; i++)
{
Candle cantype = Candle(i);
push_back(cantype);
}
}
그래서, 우리는 candle-으로 객체를 채우고이 construcor 전화 값. 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 (Series (3));
생성자가 작업을 수행하면 월등히 좋습니다. 그러나 나는 그들을 업데이트 :
for (size_t x =0; x<=size()-1;x++) vec[x].Update();
나는 문제가있다 : 그것은 벡터의 변경 사항을 저장 두지. Update 메소드에서 everithing은 괜찮습니다. 필요한 촛불을 그 자체에 삽입하지만 메소드가 종료됩니다. 벡터의 상태 (vec의 각 요소)에는 아무런 변화가 없습니다. 메소드에서 우리는 변화를 봅니다.하지만 벡터가 생성자와 같은 것이 된 후에도 상태는 여전히 동일합니다. 말해줘, 제발, 내가 뭘 잘못하고있어? 다른 사람이 이미 언급 한 바와 같이
은 표준 라이브러리 기능에서 파생되지 않았습니다. 특히 컨테이너가 아닙니다. – PlasmaHH
잘못된 상속. [상속보다 컴포지션 선호] (http://en.wikipedia.org/wiki/Composition_over_inheritance). – Nawaz
표준 컨테이너에서 상속하면 정의되지 않은 결과가 나타납니다. 수정 (상속 대신 작성)하고 문제가 해결되지 않으면 다른 질문을 게시하십시오. – utnapistim