gpt4 book ai didi

c++ - C++删除静态对象的方法

转载 作者:太空狗 更新时间:2023-10-29 20:39:39 25 4
gpt4 key购买 nike

我正尝试在过剩中构建简单的画家(即点、线、圆...等)。每行必须有两个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com