Errore sulla spinta fenice :: compilazione bind
-
16-09-2019 - |
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.
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;