2009-10-24 3 views
1

Passer à GCC pour la première fois, et je suis un peu confus par ce que le compilateur me dit ici. Essentiellement, il se comporte comme boost :: xpressive :: wsregex n'est pas défini (je crois).Boost :: Xpressive compile puzzle sous MinGW

Voici le code correspondant:

#include "criterion.h" 
#include <string> 
#include <boost/xpressive/xpressive.hpp> 

//More lines of code omitted here 

class perlRegex : public regexClass 
{ 
private: 
    std::wstring regexString; 
    boost::xpressive::wsregex regex; // This is the line complained about 
public: 
    unsigned __int32 getPriorityClass() const; 
    BOOL include(fileData &file) const; 
    unsigned int directoryCheck(const std::wstring& /*directory*/) const; 
    std::wstring debugTree() const; 
    perlRegex(const std::wstring& inRegex); 
}; 

Et voici l'erreur:

regex.h:46: error: using-declaration for non-member at class scope 
regex.h:46: error: expected `;' before "regex" 

Ce que je suis confus au sujet ici est que je déclare un membre, mais il se plaint que J'utilise un membre ailleurs. J'ai oublié #include quelque chose?

Merci à l'avance, Billy3

+0

Je suppose qu'il ya une définition de regexClass soit en criterion.h ou dans le code précédent omis? –

+0

Oui, c'est '# define'd dans criteria.h. –

+0

Pouvez-vous vous assurer que les chemins de recherche d'en-tête sont corrects, c'est-à-dire que les bibliothèques Boost sont correctement incluses dans votre source? – dirkgently

Répondre

5

Cygwin et MinGW ne prennent pas en charge les caractères larges, de sorte Xpressive ne peut pas non plus. Voir les éléments suivants de xpressive_fwd.hpp:

#if defined(BOOST_NO_CWCHAR) | \ 
    defined(BOOST_NO_CWCTYPE) | \ 
    defined(BOOST_NO_STD_WSTRING) 
# ifndef BOOST_XPRESSIVE_NO_WREGEX 
# define BOOST_XPRESSIVE_NO_WREGEX 
# endif 
#endif 

Les BOOST_NO_CWCHAR macros, BOOST_NO_CWCTYPE et BOOST_NO_STD_WSTRING sont définis automatiquement par l'en-tête de config.hpp de boost pour votre platcorm/compilateur/std-bibliothèque. Pardon.

À l'avenir, vous obtiendrez de meilleurs résultats en publiant des questions d'amélioration dans la liste des utilisateurs boostés.

- Eric Niebler BoostPro Computing www.boostpro.com

+0

Devinez je suis coincé avec le compilateur de Microsoft puis: ( –

+2

Wow! Pas tous les jours vous obtenez une réponse de l'auteur de la bibliothèque.Merci encore :) –