2012-04-07 77 views
0

我没有收到任何错误消息,只是我的向量没有填充。查看观察列表中的矢量,没有任何内容正在被复制。为什么是这样? 我试过两种方法。 我试图用三分球Vector_push不填充矢量(C++)

std::vector<Point3D*> hitpoints; 
Point3D* hittingpoint_ptr = new Point3D; 
local_hit_point = sr.local_hit_point; 
hittingpoint_ptr = &local_hit_point; 
hitpoints.push_back(hittingpoint_ptr); 

第一

std::vector<Point3D*> hitpoints; 
local_hit_point = sr.local_hit_point; //local_hit_point class Point3D 
hitpoints.push_back(local_hit_point); 

第二种方法我在我的代码工作其他地方得到了载体。我真的只是傻,但我似乎无法弄清楚为什么它不工作。

+2

你怎么知道它没有填充? (请使用源代码) – Vincent 2012-04-07 12:04:27

+1

如果您只有一个,为什么要使用它? sr.local_hit_point'实际上是一个Point3D数组吗?在这种情况下,你需要遍历它们并逐一添加它们。 – 2012-04-07 12:04:33

+0

您可以使用'hitpoints.size()'来查看有多少元素。当存储指针时,你确定指向的对象是否保持原位? – 2012-04-07 12:08:46

回答

0

我最好的猜测是你有一个问题,你调试器..

首先的建议;

  • 清除一切您所关注的,因为他们可以改变执行的行为 检查一遍..

的第二个建议;

  • 创建一个新的项目,写一个简单的代码,类似上面的,看看你的矢量是否populating..If这个简单的项目工作,你应该提供我们更多的代码和细节..
0

只是我的向量没有填充。

它正在填充。然而

望着观察名单矢量... 我用hitpoint.size()函数/方法调用

结果(大小()是一个方法)不会自动更新在视觉工作室监视列表中(因为你没有告诉你使用的是什么操作系统/编译器,我必须假定它是视觉工作室)。即如果您将函数调用输入到监视列表中,它将计算结果,但在手动刷新之前不会再调用函数。将矢量本身添加到监视列表中,而不是函数调用。