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