- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
typedef boost::variant<int, double> Type;
class Append: public boost::static_visitor<>
{
public:
void operator()(int)
{}
void operator()(double)
{}
};
Type type(1.2);
Visitor visitor;
boost::apply_visitor(visitor, type);
是否可以更改访问者,使其接收如下额外数据:
class Append: public boost::static_visitor<>
{
public:
void operator()(int, const std::string&)
{}
void operator()(double, const std::string&)
{}
};
此字符串值在 Append 对象的生命周期内发生变化。在这种情况下,通过构造函数传递字符串不是一个选项。
最佳答案
每次调用的“附加参数”是 this
指针。使用它来传递您需要的任何其他信息:
#include <boost/variant.hpp>
typedef boost::variant<int, double> Type;
class Append: public boost::static_visitor<>
{
public:
void operator()(int)
{}
void operator()(double)
{}
std::string argument;
};
int main() {
Type type(1.2);
Append visitor;
visitor.argument = "first value";
boost::apply_visitor(visitor, type);
visitor.argument = "new value";
boost::apply_visitor(visitor, type);
}
关于c++ - 具有多个参数的 boost::static_visitor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12954852/
我正在尝试创建一个访问者函数,它将我的 boost::variant 的值加在一起。 .我在类型不同的情况下使用模板,例如 int + float typedef boost::variant Val
typedef boost::variant Type; class Append: public boost::static_visitor<> { public: void operato
我正在尝试boost::variant并使用如下所示的标准类型进行打印。 typedef boost::variant myVariant; myVariant my; my = "Hello"; s
我正在使用 boost::variant在我的项目中经常出现。我的同事们现在想出了传递特定 boost::static_visitor 实例的想法。以自定义访问类型。她有一些代码如下: #includ
几天前我开始使用 boost 库,所以我的问题可能是微不足道的。我想将两个相同类型的变体与 static_visitor 进行比较。我尝试了以下,但它不想编译。 struct compare:publ
我正在尝试为 ints 创建一个查找表到 boost::static_visitor using VariableValue = boost::variant; struct low_priority
我必须创建 boost::variant 对象并使用 static_visitor。不幸的是我需要额外的参数...... 哪种解决方案更好?要将此对象作为类的字段,当我想使用访问者时,我必须创建实例:
我有以下代码: typedef boost::variant SearchParameter; enum Visibility{ CLEAR, CLOUDY, FOG,
我广泛使用 Boost 的变体类型来构建树。更准确地说,我使用 Boost 的 Qi 从语法中解析出一棵树,然后我遍历这棵树以用一个整数注释每个节点 - 至少这是我想要做的。 我刚刚意识到,由于 st
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
作为个人练习,我想使用 shared_ptr 实现访问者模式。我熟悉 Robert Martin 的非循环访问者论文,但发现虚拟 accept() 的侵入性以及为每个 {X} 类创建 {X}Visit
我是一名优秀的程序员,十分优秀!