0

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

错误 C2039:“绑定”:不是“凤凰”的成员

我使用绑定和错误指向的代码行是:

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

我不知道是什么问题。

phoenix include 是这一行:#include boost/spirit/home/phoenix.hpp

谢谢。

4

1 回答 1

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;

如果你使用了大量来自 Phoenix 的东西,你可以从那个命名空间中引入所有东西,尽管这可能会产生意想不到的后果,因为它会包含你甚至不知道存在的东西,并且可能会干扰你自己的代码.

using namespace boost::phoenix;
于 2009-08-14T18:27:27.233 回答