我有一个帮助类来释放 MYSQL_RES 句柄。
class auto_mysqlres
{
public:
auto_mysqlres(MYSQL_RES *res) : m_res(res)
{
}
~auto_mysqlres()
{
if (m_res != NULL)
mysql_free_result(m_res);
}
operator MYSQL_RES* ()
{
return m_res;
}
private:
auto_mysqlres& operator= (const auto_mysqlres &res);
auto_mysqlres (const auto_mysqlres &res);
private:
MYSQL_RES *m_res;
};
当我尝试以这种方式使用它时,我
auto_mysqlres result = return_pointer_to_mysql_res();
在GCC 4.6.3: auto_mysqlres::auto_mysqlres(const auto_mysqlres&) is private
. 但是,MSVC 2008 中没有错误。
return_pointer_to_mysql_res
返回MYSQL_RES*
,当然我已经解决了这条线的问题auto_mysqlres result (return_pointer_to_mysql_res());
但我想知道为什么会出现这个错误。我不明白为什么 GCC 会在那里创建一个临时对象。