boost phoenix :: bind编译错误

时间:2009-08-14 17:26:24

标签: c++ boost boost-phoenix

我正在使用phoenix :: bind并收到此错误消息:

  

错误C2039:'bind':不是会员   '凤凰'

我正在使用bind的代码行和错误指向的位置是:

  

凤凰::绑定(   & OptionalInputPort :: eraseDataEditor)                   (phoenix :: var(* optionalPort))

我无法弄清楚问题是什么。

凤凰包括这一行:#include boost / spirit / home / phoenix.hpp

感谢。

1 个答案:

答案 0 :(得分:1)

phoenix命名空间 boost命名空间(就像Boost中的其他所有内容一样)。

boost::phoenix::bind( &OptionalInputPort::eraseDataEditor ) ( boost::phoenix::var( *optionalPort ) )

为了避免所有输入,您可以在此前面添加C ++文件以创建名称空间别名

namespace phoenix = boost::phoenix;

然后您的原始代码应该有效。如果你经常使用bind,你可以告诉你的编译器,当你说bind时,你指的是boost::phoenix中的那个:

using boost::phoenix::bind;

如果您正在使用来自凤凰城的批次的东西,您可以从该命名空间中引入所有内容,尽管这会产生意想不到的后果,因为它会包含您甚至不知道的内容存在,这可能会干扰您自己的代码。

using namespace boost::phoenix;