gpt4 book ai didi

c++ - boost :为什么 apply_visitor 在此代码中不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 01:52:02 26 4
gpt4 key购买 nike

我收到以下编译器错误:

/usr/include/boost/variant/variant.hpp:832:32: error: no match for call to ‘(const StartsWith) (bool&)’

对于下面的代码。有人知道为什么吗?

#include "boost/variant/variant.hpp"
#include "boost/variant/apply_visitor.hpp"

using namespace std;
using namespace boost;

typedef variant<bool, int, string, const char*> MyVariant;

class StartsWith
: public boost::static_visitor<bool>
{
public:
string mPrefix;
bool operator()(string &other) const
{
return other.compare(0, mPrefix.length(), mPrefix);
}
StartsWith(string const& prefix):mPrefix(prefix){}
};

int main(int argc, char **argv)
{
MyVariant s1 = "hello world!";
apply_visitor(StartsWith("hel"), s1); // << compiler error
return 0;
}

最佳答案

您必须为 MyVariant 中声明的每个类型提供运算符。

关于c++ - boost :为什么 apply_visitor 在此代码中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13265156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com