因此,我了解了使用std::unique_ptr
的好处。我为MySQL尝试过,并且有一些错误。我试图缩小范围。是什么原因造成的?
std::unique_ptr<sql::PreparedStatement> stmt_prepared;
stmt_prepared = conn->prepareStatement("SELECT content FROM books WHERE title = ?;");
第一个=
出现编译时错误:
“没有运算符'='匹配这些操作数。”
prepareStatement()
返回指向sql::PreparedStatement
的指针。
如果有关系,PreparedStatement
类具有纯虚函数。
有关该课程的更多信息:
https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-examples-prepared-statements.html
答案 0 :(得分:1)
std::unique_ptr
没有定义使用原始指针的副本分配运算符。相反,您可以使用reset
函数来调用析构函数并释放当前持有的对象(在这种情况下,没有对象),然后存储传递的对象。
std::unique_ptr<sql::PreparedStatement> stmt_prepared;
stmt_prepared.reset(conn->prepareStatement("SELECT content FROM books WHERE title = ?;"));
如果您不想使用值构造unique_ptr
:
std::unique_ptr<sql::PreparedStatement> stmt_prepared(
conn->prepareStatement("SELECT content FROM books WHERE title = ?;")
);