Ala*_*uża 0 c++ serialization boost boost-serialization
传递this分配给另一个指针的指针可以很好地工作,但是直接传递它本身本身却不行,如下所示:
table_row* table_row::deserialize_row(std::string src_serialized_row) {
std::stringstream ss(src_serialized_row);
boost::archive::text_iarchive ia(ss);
table_row * dest = this;
ia >> dest; // this is fine, compiles.
return dest;
}
Run Code Online (Sandbox Code Playgroud)
table_row* table_row::deserialize_row(std::string src_serialized_row) {
std::stringstream ss(src_serialized_row);
boost::archive::text_iarchive ia(ss);
ia >> this; //error, >> operator does not match [error]
return this;
}
Run Code Online (Sandbox Code Playgroud)
[错误] 我不太了解。我在两个代码示例中都传递了相同的指针,对吗?为什么会出错?
唯一的区别是它this是一个prvalue,将其分配给dest它将成为一个lvalue。
我假设运算符看起来像这样:
template<class T>
boost::archive::text_iarchive& operator>>(
boost::archive::text_iarchive& ia,
T& archive_to
);
Run Code Online (Sandbox Code Playgroud)
像rvalue这样的值this不能绑定到非const lvalue引用,因为它试图将指针设置为反序列化的值(可能不是您想要的值)。
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |