首页 > 解决方案 > 如何在 boost::variant 中存储引用而不是复制对象?

问题描述

假设我有一个boost::variant定义为boost::variant<Point, Line, Circle> shape. 现在,如果我创建 Point 类的对象,Point p并将其存储在形状中,因为shape = p我在这里所做的是制作 p 的副本。我如何实际存储对 p 的引用,这样当我调用boost::apply_visitior(visitor, shape)访问者时,不仅会改变存储在变体中的点,还会改变p它本身?

标签: c++boostvariantboost-variant

解决方案


boost::variant<Point*, Line*, Circle*> 

然后

shape = &p;

然后让您的访问者在指针上过载。


推荐阅读