我有两个类,从一个普通的类派生。 公共类有一个名为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 2010-05-31 20:31:40