C++ 属性向量自身清空

C++ 属性向量自身清空,c++,C++,我有两个类,从一个公共类派生而来。 公共类有一个名为execute()的纯虚拟函数,它在两个派生类中都实现。 在继承的类中,我有一个属性,它是一个向量。在这两个execute()方法中,我都会用一个结果覆盖这个向量。我从指向它们对象的指针向量访问这两个类。 问题是当我试图访问对象外部的结果向量形式时。在一种情况下,我可以得到元素(它们只是指针),在另一种情况下,我不能得到,向量是空的 代码: E类; 甲级{ 受保护的: 矢量结果; 公众: 虚空执行()=0; 向量get_result(); };

我有两个类,从一个公共类派生而来。 公共类有一个名为execute()的纯虚拟函数,它在两个派生类中都实现。 在继承的类中,我有一个属性,它是一个向量。在这两个execute()方法中,我都会用一个结果覆盖这个向量。我从指向它们对象的指针向量访问这两个类。 问题是当我试图访问对象外部的结果向量形式时。在一种情况下,我可以得到元素(它们只是指针),在另一种情况下,我不能得到,向量是空的

代码:

E类;
甲级{
受保护的:
矢量结果;
公众:
虚空执行()=0;
向量get_result();
};
向量A::get_result()
{
返回结果;
}
B类:公共A
{
公众:
虚空执行();
};
B::execute()
{
//...
_结果=tempVec;
返回;
}
C类:公共A类
{
公众:
虚空执行();
};
C::execute()
{
//不同的东西给B
_结果=tempvec;
返回;
}
main()
{
B*B=新的B();
C*C=新的C();
b->execute();
c->execute();
b->get_result();//返回完整向量
c->get_result();//返回空向量!!
}
我不知道这里发生了什么。。。我已经尝试过手动从有问题的类中的临时向量填充_result,对vector::assign()也做过同样的操作,但没有任何效果。而另一个对象工作得很好。我一定错过了什么。。。。
任何帮助都将不胜感激。

因为在
B
C
这两个类之间,其他一切都是一样的,我不得不说

//different stuff to B
这可能很重要

另外,您的
get\u result()
方法应该是

const vector<E*>& get_result() const;
const vector&get_result()const;

为了节省您每次复制向量的时间。

由于类
B
C
之间的所有其他内容都是相同的,我不得不说

//different stuff to B
这可能很重要

另外,您的
get\u result()
方法应该是

const vector<E*>& get_result() const;
const vector&get_result()const;

我想知道tempVec是从哪里来的,但是在Troubadour的回答之后,我意识到你忽略了代码。这里肯定有问题,因为我看不出代码有任何问题。

我想知道tempVec是从哪里来的,但在Troubadour的回答之后,我意识到你忽略了代码。这肯定是个问题,因为我看不出代码有任何问题。

我想我知道是什么问题。在类B::execute方法中保存tempVec,(V-很大),在类C中保存tempVec。嗯,tempVec-不是空的,tempVec-是空的。没什么不对劲。

我想我知道怎么回事了。在类B::execute方法中保存tempVec,(V-很大),在类C中保存tempVec。嗯,tempVec-不是空的,tempVec-是空的。不要看到任何错误。

这是产生错误的真实代码,还是只是一个近似值?这个例子不会编译-tempvec/tempvec是未声明的。这是产生错误的真实代码,还是仅仅是一个近似值?这个示例无法编译-tempvec/tempvec未声明。我同意,问题可能出在其他地方,显示的代码对我来说似乎完全正常。有一些区别,它们处理不同的向量:tempvec和tempvec。好的,我发现了错误,当然与显示的代码无关。我从一个向量a*访问我的对象,我有硬编码和索引。所以它找错了目标。通常我花了一个小时查找,将问题发布在这里,并迅速发现问题。。。无论如何,非常感谢@麦克斯:是的,我想那只是个打字错误。因为真正的代码被省略了。当然你永远不知道……;)我同意,问题可能出在其他地方,显示的代码对我来说似乎完全正常。有一些不同,它们处理不同的向量:tempVec和tempVec。好的,我发现了错误,当然与显示的代码无关。我从一个向量a*访问我的对象,我有硬编码和索引。所以它找错了目标。通常我花了一个小时查找,将问题发布在这里,并迅速发现问题。。。无论如何,非常感谢@麦克斯:是的,我想那只是个打字错误。因为真正的代码被省略了。当然你永远不知道……;)好的,我已经发现了这个bug,它当然与显示的代码无关。我从一个向量a*访问我的对象,我有硬编码和索引。所以它找错了目标。通常我花了一个小时查找,将问题发布在这里,并迅速发现问题。。。无论如何,非常感谢!好的,我已经发现了这个bug,它当然与显示的代码无关。我从一个向量a*访问我的对象,我有硬编码和索引。所以它找错了目标。通常我花了一个小时查找,将问题发布在这里,并迅速发现问题。。。无论如何,非常感谢!好的,我已经发现了这个bug,它当然与显示的代码无关。我从一个向量a*访问我的对象,我有硬编码和索引。所以它找错了目标。通常我花了一个小时查找,将问题发布在这里,并迅速发现问题。。。无论如何,非常感谢!好的,我已经发现了这个bug,它当然与显示的代码无关。我从一个向量a*访问我的对象,我有硬编码和索引。所以它找错了目标。通常我花了一个小时查找,将问题发布在这里,并迅速发现问题。。。无论如何,非常感谢!