나는 공통 클래스에서 파생 된 두 개의 클래스가 있습니다. 공통 클래스에는 파생 클래스 모두에서 구현되는 execute()라는 순수 가상 함수가 있습니다. 상속 된 클래스에는 벡터 인 특성이 있습니다. 두 가지 execute() 메서드 모두에서이 벡터를 결과로 덮어 씁니다. 객체에 대한 포인터의 벡터에서 두 클래스에 모두 액세스합니다. 개체 외부에서 결과 벡터 폼에 액세스하려고하면 문제가 발생합니다. 하나의 경우 요소 (단순히 포인터)를 얻을 수 있고, 다른 요소에서는 벡터가 비어 있습니다.속성 벡터 자체 비우기
코드 : 나는 무슨 일이 여기에 가고 아무 생각이
class E;
class A{
protected:
vector<E*> _result;
public:
virtual void execute()=0;
vector<E*> get_result();
};
vector<E*> A::get_result()
{
return _result;
}
class B : public A
{
public:
virtual void execute();
};
B::execute()
{
//...
_result = tempVec;
return;
}
class C : public A
{
public:
virtual void execute();
};
C::execute()
{
//different stuff to B
_result = tempvec;
return;
}
main()
{
B* b = new B();
C* c = new C();
b->execute();
c->execute();
b->get_result();//returns full vector
c->get_result(); //returns empty vector!!
}
... 나는 (벡터와 같은 일 :: 할당을 위반 클래스의 임시 벡터에서 손으로 _result 작성 시도), 아무것도 작동하지 않습니다. 그리고 다른 목적은 완벽하게 작동합니다. 나는 뭔가를 놓치고 있어야합니다 .... 도움이 크게 주시면 감사하겠습니다. 다른 모든 것들 이후
이 코드는 오류를 생성하는 * 실제 * 코드입니까, 근사치입니까? 이 예제는 컴파일되지 않습니다. tempvec/tempVec은 선언되지 않습니다. – SigTerm