如何在c++中从引用中获取值
How to get value from reference in c++
我有一个函数,它返回一个常量&到对象。比方说,
class Y {
private:
Id id;
public:
Id const& GetId() const;
}
现在这个Y对象是另一个类的一部分,比如说X类,它需要通过boost进行序列化。
class X {
template <class Archive>
void serialize(Archive& ar, uint32 version)
{
ar & y->GetId();
}
Y y;
}
然而,boost对此表示不满,并给出错误:
error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE<x>'
C:UsersY.h(580) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_iarchive<Archive>::operator &<const Id>(T &)' being compiled
with
[
如何序列化Id?
ar & y->GetId();
应该是
ar & y.GetId();
boost序列化的目的是使用引用序列化到Archive。
问题是它接收的值是引用,而不是CONST引用。
Id const& GetId() const; // Returns a const reference
尝试使用以下
Id & GetId();
然后是以下之一
ar & y.GetId();
ar << y.GetId();
如果你不喜欢破坏封装,那么要么使用protected、friends,要么将其复制到另一个值并将该值作为引用传递
Id copy = y.GetId();
ar & copy;
除了问题->(参见@thomas),您还需要两个:
Id const& GetId() const;
Id& GetId();
或者将BOOST _SERIALIZATION_SPLIT_MEMBER输入/输出一分为二。
相关文章:
- 具有默认值的引用获取函数
- 很好的语法来获取对向量/数组数据的大小引用?
- C++ 获取函数在常量引用中按值返回的结果
- 获取对function_name的未定义引用
- 重载运算符*以获取对另一个类的实例的引用
- 我可以从其变量中获取对类对象的引用吗?
- 如何通过引用获取引用变量的地址?
- 如何在函数参数中通过引用获取数组
- 为什么 std::find_if(first, last, p) 不通过引用获取谓词?
- boost::可选 - 对对象使用 boost::in_place,构造器通过引用获取其他对象
- 在常量引用获取器上读取写入互斥锁(使用 Qt)
- 使用const_cast const-ref getter 实现引用获取器的陷阱
- 如何避免意外地按值而不是按引用获取数组元素
- 从指针或引用获取迭代器
- 如何在visual c++内联汇编程序中通过引用获取值
- 将函数指针传递给一个函数,该函数通过引用获取另一个函数
- 为什么std::num_put通过非常量引用获取ios_base参数
- 为什么 std::make_pair 是按值而不是常量引用获取输入
- 是否可以通过常量引用获取参数,同时禁止转换,以便不传递临时变量?
- 基于范围的循环:通过值或对const的引用获取项