【发布时间】:2020-07-22 12:15:59
【问题描述】:
我正在尝试将 BOOST_FUSION_ADAPT_ADT 应用于类,如下所示:
class XY {
private:
std::string x; // lhs
std::list<std::list<std::string>> y;
public:
std::list<std::list<std::string>> const &getY() const {
return y;
}
void setY(std::list<std::list<std::string>> const &y) {
this->y = y;
}
std::string const &getX() const { return x; }
void setX(std::string const &x) { this->x = x; }
};
但是,我收到以下错误,我不太清楚是什么问题。
xxxxxxxxxxxxxxx: error: no matching function for call to ‘Rule::setY(const std::__cxx11::basic_string<char>&)’
(std::list<std::list<std::string>> const&, std::list<std::list<std::string>> const&, obj.getY(), obj.setY(val))
^
xxxxxxxxxxxxxxx: note: candidate: void Rule::setY(const std::__cxx11::list<std::__cxx11::list<std::__cxx11::basic_string<char> > >&)
void setY(std::list<std::list<std::string>> const &y) {
【问题讨论】:
-
我偷偷怀疑你可能正在编写解析器。过去我在灵气上使用 ADAPT_ADT 时运气不佳。基本上,我一直因为会员代理而遇到 UB。我希望它现在已经修复,但我个人不会打赌。
标签: c++ boost boost-fusion