c++ - 如何在 boost::variant 中存储引用而不是复制对象?
问题描述
假设我有一个boost::variant
定义为boost::variant<Point, Line, Circle> shape
. 现在,如果我创建 Point 类的对象,Point p
并将其存储在形状中,因为shape = p
我在这里所做的是制作 p 的副本。我如何实际存储对 p 的引用,这样当我调用boost::apply_visitior(visitor, shape)
访问者时,不仅会改变存储在变体中的点,还会改变p
它本身?
解决方案
boost::variant<Point*, Line*, Circle*>
然后
shape = &p;
然后让您的访问者在指针上过载。
推荐阅读
- gcc - MacOS High Sierra 上的链接错误:“架构 x86_64 的未定义符号”std::__1
- c# - EF 如何在后台更新相关记录?
- java - 如何将多个文件附加到音频输入流
- javascript - 试图获取 API 提供的 javascript 对象的“名称”
- json - chart.js 中未定义的 x 值
- node.js - AWS Lambda:模块初始化错误:Object.fs.openSync (fs.js:641:18) 处的错误(本机)错误
- regex - Bash 检查 CIDR 地址是否有效
- python - 在神经网络训练之前,我是否应该有两组词向量(word2vec),一组用于 questionSet,一组用于 answerSet?
- python - Django:有没有办法用“du”非正式地称呼?
- java - StringConcatFactory 中的策略