我目前正在嘗試調用sqlite3庫函數,它期望我通過它sqlite3**
。獲取指向智能指針指向的對象的指針 - Ivalue錯誤
這是我目前的代碼。我有一個工作部分,一部分是給我一個錯誤:
sqlite3 *sqlite = m_db.get();
if (sqlite3_open(std::string(m_dbName.begin(), m_dbName.end()).c_str(), &sqlite))
{
}
if (sqlite3_open(std::string(m_dbName.begin(), m_dbName.end()).c_str(), &(m_db.get())))
{
}
我m_db
場看起來是這樣的:
std::unique_ptr<sqlite3> m_db = nullptr;
兩個例子我展示中,第一個是工作完全正常。然而,第二個給我這個錯誤。請注意,這是從&(m_db.get())
部分來:
「Address expression must be an lvalue or a function designator」
我讀了關於左值和右值一點點,但我似乎無法找出爲什麼這個語法是不可能的。據我現在瞭解,問題是.get()操作的返回值僅僅是一個臨時表達式結果,因此在內存中沒有可以從中獲取地址的可識別位置。
我想,在一個聲明中必須有一種方法來實現這一點。
任何人都可以向我解釋爲什麼這不起作用,我怎麼可能解決它?
你爲什麼與'm_dbName' –
做怪異的東西,這是一個wstring的,我轉換成字符串 – Sossenbinder
這是相當狡猾 –