Domanda

sto usando fenice :: bind e la ricezione di questo messaggio di errore:

  

C2039 errore: 'bind': non è un utente   di 'Phoenix'

La linea di codice in cui sto usando bind e dove l'errore è di puntamento è:

  

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

e non riesco a capire qual è il problema.

la fenice includono è questa linea: #include boost / spirito / home / phoenix.hpp

Grazie.

È stato utile?

Soluzione

Lo spazio dei nomi phoenix è all'interno lo spazio dei nomi boost (proprio come tutto il resto in Boost).

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

Per evitare tutto ciò che di battitura, si potrebbe precedere il vostro C ++ file con questo per creare un alias namespace :

namespace phoenix = boost::phoenix;

Allora il vostro codice originale dovrebbe funzionare. Se stai usando bind molto, si potrebbe dire al vostro compilatore che quando si dice bind, si intende quello in boost::phoenix:

using boost::phoenix::bind;

Se stai usando un sacco di roba da Phoenix, si può solo portare in tutto, da quel namespace, anche se questo può avere conseguenze impreviste in quanto includerà la roba che non si sapeva nemmeno esisteva, e che potrebbe interferire con il proprio codice.

using namespace boost::phoenix;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top