Pergunta

Mudar para GCC, pela primeira vez, e eu estou ficando um pouco confuso com o que o compilador está me dizendo aqui. Essencialmente, ele está se comportando como boost :: xpressive :: wsregex não está definido (eu acredito).

Aqui está o código relevante:

#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);
};

E aqui está o erro:

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

O que eu estou confuso sobre aqui é que eu estou declarando um membro, mas ele se queixa de que eu estou usando um membro em outro lugar.

Have I esqueceu de #include alguma coisa?

Agradecemos antecipadamente, Billy3

Foi útil?

Solução

cygwin e mingw não suportam caracteres largos, então xpressive não quer. Veja a seguir a partir 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

As macros BOOST_NO_CWCHAR, BOOST_NO_CWCTYPE e BOOST_NO_STD_WSTRING são definidos automaticamente pelo cabeçalho config.hpp de impulso para o seu platcorm / compilador / std-biblioteca. Desculpe.

No futuro, você obterá melhores resultados postando impulso perguntas a lista dos usuários impulso.

- Eric Niebler BoostPro Computing www.boostpro.com

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top