我正尝试在过剩中构建简单的画家(即点、线、圆...等)。每行必须有两个 Point
类型的点,因此每次用户输入鼠标左键时,都会执行所选命令。为了画一条线,我需要跟踪用户点击鼠标的次数,所以这就是我所做的
if ( command == 1 ){ // drawing a line
static int count(0); // track click no.
static std::vector<Point> p;
//static Point startPoint(mouseX, mouseY);
p.push_back(Point(mouseX, mouseY));
if ( count == 1 ){
Point endPoint(mouseX, mouseY);
Point startPoint = p[0];
shapes->addLine(Line(startPoint, endPoint));
count = 0;
p.clear();
}else{
count++;
}
我使用 std::vector
只是为了使用 clear()
这样我就可以删除我需要的 startPoint
静止的。我的问题是有没有一种方法可以通过使用 vector
来销毁一个对象而不用增加行数?我试图调用析构函数,但没有帮助。
最佳答案
你可以使用 unique_ptr<Point>
.然后你可以使用reset
设置或销毁 Point
:
static std::unique_ptr<Point> startPoint;
if (startPoint){
Point endPoint(mouseX, mouseY);
shapes->addLine({*startPoint, endPoint});
startPoint.reset();
} else {
startPoint.reset(new Point(mouseX, mouseY));
}
关于c++ - C++删除静态对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27211137/