我遇到了一个对我来说没有多大意义的编译器错误:
#include <memory>
using namespace std;
auto_ptr<Table> table = db->query("select * from t");
错误:请求从“表*”转换为非标量类型“std::auto_ptr<表>”
但是,以下行确实有效:
auto_ptr<Table> table(db->query("select * from t"));
构造函数的这个定义阻止它按我预期工作的原因是什么?我认为初始化声明使用了构造函数。
这是我auto_ptr
的构造函数(来自 SGI STL):
explicit
auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { }