0

phoenix::bind を使用していますが、次のエラー メッセージが表示されます。

エラー C2039: 'bind' : 'phoenix' のメンバーではありません

私がバインドを使用していて、エラーが指しているコード行は次のとおりです。

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

何が問題なのかわかりません。

フェニックスのインクルードは次の行です: #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 に答える