[英]lvalue required as unary '&' operand in c++11
我正在編碼c ++ 11。 在A類中,我有一個成員變量 “ member”,其定義為
vector<OtherClass> member; // A's member variable
我想將A序列化(因此我想將vector中包含的OtherClass中的所有數據類型)序列化為二進制格式的文件,因此我定義了一個函數寫入,如下所示。
void A::write(ostream& os){ // A's function for outputting A
os.write(reinterpret_cast<const char*>( &(member.size()) ), sizeof(member.size()));
}
但是編譯器說,左值要求為一元“&”操作數。
如何在不創建寫入函數中諸如long size = member.size()之類的臨時對象的情況下進行修復?
問題是&(member.size())
-您沒有分配size()的返回值並試圖獲取它的地址(它甚至可能沒有地址)。
但是不知道為什么無論如何都要在這里調用size,您需要實際數據的起始地址: member.data()
(或者如果您沒有C ++ 11 &member[0]
)
“如何在不創建臨時對象的情況下進行修復”
你不能 您要使用&
,它采用對象的地址。 沒有對象,沒有地址。 真的就是這么簡單。
請注意,您的long size = member.size()
想法不會創建臨時變量。 那是一個普通的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.