我正在尝试编写一段代码,它接受一个对象并将其推送到矢量的背面,但是没有正确地推送对象。
我正在编写一个OpenGL应用程序,我想在其中绘制许多行。为了存储这些线,我首先在C2DPointSet
中创建每一行,当我停止绘制时,我想在我的矢量线中推送当前行。通过调试代码,我看到推动行后向量的长度为0,向量中的同一行有0个点(不应该是这种情况)。这是代码:
vector <C2DPointSet> lines; //global variables
C2DPointSet line;
//function that runs if a button is pressed and i click in my glwindow
void lineButtonFunction(int x,int y){
C2DPoint currentPoint;
currentPoint=workspacePoint(x,y);//returns point;s cordinates acording to cursorx,y-it works
line.AddCopy(currentPoint);//adds a copy of the given point to obj line
}
//code that runs when i am done drawing
if(buttons[i].getButtonText()=='L'){
lines.push_back(line);
line.DeleteAll();//empties the obj
}
我不知道问题所在。使用不同的对象代码将运行。我不确定,但我认为问题源于推动C2DPointSet
,因为它存储了我喜欢的点数。另外,我观察到无论我在行中存储了多少个点,我的大小都是12。
C2DPoints
和C2DPointSet
来自geolib;信息可以找到here。
答案 0 :(得分:2)
C2DPointSet似乎有一个构造函数和一个析构函数,但没有复制构造函数和复制赋值运算符,即C2DPointSet不跟随the rule of three。如果C2DPointSet具有指针成员,则这是有问题的。可以?然后它本身就被打破了。它只是在向量中不起作用。
答案 1 :(得分:0)
可能它取决于C2DPointSet类的内容。可能你没有复制构造函数。我的建议是有一个引用向量而不是实际对象的向量。这样你也可以减少开销。所以你应该有vector&lt;&amp; C2DPointSet&gt;线条,而不是你拥有的。试试吧。它可能会奏效。