0.引言
在使用开源优化库QP时,采用了OSQP-EIGEN的包装器,在我的类中想引用他的求解器
///// test.hpp
class name{
*******
OsqpEigen::Solver solver;
}
在别的文件中引用这个test.hpp时会报错已被定义,发现是构造函数和析构函数不能放在.hpp文件中,放在.cpp中就可以了。然后就是在程序中初始化,发现报错
C2280 ************** 尝试引用已删除的函数
1.解决方法
经过查看网上案例,发现说是C++标准为某些类自动删除了构造函数。后来看到这篇文章,找到了解决方法:
std::shared_ptr<OsqpEigen::Solver> solver;
就是将这个类变成智能指针就可以了。
在这里记录一下,如果你也有这个问题,可以尝试看看是那个类引起的,然后将其变成智能指针的形式就可以了。
本文讲述了在使用开源优化库OSQP-EIGEN时,遇到构造函数被自动删除的问题。通过将相关类转换为智能指针形式,解决了编译错误。适用于遇到类似类构造难题的开发者。
2709

被折叠的 条评论
为什么被折叠?



