boost phoenix::bind 编译时出错
我正在使用 phoenix::bind 并收到此错误消息:
错误 C2039:“绑定”:不是成员 '凤凰'
我使用绑定和错误指向的代码行是:
凤凰::绑定( &可选输入端口::擦除数据编辑器) ( phoenix::var( *可选端口 ) )
,我不知道问题出在哪里。
phoenix 包含的是这一行:#include boost/spirit/home/phoenix.hpp
谢谢。
I'm using phoenix::bind and receiving this error message:
error C2039: 'bind' : is not a member
of 'phoenix'
The code line where I'm using bind and where the error is pointing is:
phoenix::bind(
&OptionalInputPort::eraseDataEditor )
( phoenix::var( *optionalPort ) )
and I can't figure out what is the problem.
the phoenix include is this line: #include boost/spirit/home/phoenix.hpp
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
phoenix
命名空间位于boost
命名空间内部(就像 Boost 中的其他所有内容一样)。为了避免所有这些输入,您可以在 C++ 文件前面添加以下内容来创建命名空间别名:
然后您的原始代码应该可以工作。 如果您经常使用
bind
,您可以告诉编译器,当您说bind
时,您指的是boost::phoenix
中的那个:如果您使用 Phoenix 的很多内容,您可以从该命名空间引入所有内容,尽管这可能会产生意想不到的后果,因为它将包含您甚至不知道存在的内容,这可能会干扰您自己的代码。
The
phoenix
namespace is inside theboost
namespace (just like everything else in Boost).To avoid all that typing, you could preface your C++ file with this to create a namespace alias:
Then your original code should work. If you're using
bind
a lot, you could tell your compiler that when you saybind
, you mean the one inboost::phoenix
:If you're using lots of stuff from Phoenix, you could just bring in everything from that namespace, although that can have unintended consequences since it will include the stuff that you didn't even know existed, and that could interfere with your own code.