Question

Passer à GCC pour la première fois et je suis un peu dérouté par ce que le compilateur me dit ici. Cela se comporte essentiellement comme boost :: xpressive :: wsregex n’est pas défini (je crois).

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 qui me dérange ici, c'est que je déclare un membre, mais il se plaint que j'utilise un membre ailleurs.

Ai-je oublié d'inclure #include ?

Merci d'avance, Billy3

Était-ce utile?

La solution

cygwin et mingw ne supportent pas les caractères larges, donc xpressive ne le peut pas non plus. Voir ce qui suit dans 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 macros BOOST_NO_CWCHAR, BOOST_NO_CWCTYPE et BOOST_NO_STD_WSTRING sont définies automatiquement par l'en-tête config.hpp de boost pour votre platecorm / compiler / std-library. Désolé.

À l'avenir, vous obtiendrez de meilleurs résultats en ajoutant des questions boost à la liste des utilisateurs boost.

- Eric Niebler BoostPro Computing www.boostpro.com

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top