Я пытался пользоваться библиотекой Boost, но я перестал работать, см. мой код:
#include "listy.h"
#include <boost/regex.hpp>
using namespace boost;
ListyCheck::ListyCheck() {
}
ListyCheck::~ListyCheck() {
}
bool ListyCheck::isValidItem(std::string &__item) {
regex e("(\\d{4}[- ]){3}\\d{4}");
return regex_match(__item, e);
}
Когда я пытался скомпилировать его, я получаю те сообщения:
/usr/include/boost/regex/v4/regex_match.hpp:50: неопределенная ссылка на 'повышение:: re_detail:: perl_matcher <__ gnu_cxx:: __ normal_iterator, станд.:: средство выделения>>, станд.:: средство выделения, станд.:: средство выделения>>>>, повышение:: regex_traits>
:: соответствие ()'
/usr/include/boost/regex/v4/basic_regex.hpp:425: неопределенная ссылка на 'повышение:: basic_regex>
:: do_assign (символьная константа*, символьная константа*, неподписанный интервал)'
/usr/include/boost/regex/v4/perl_matcher.hpp:366: неопределенная ссылка на 'повышение:: re_detail:: perl_matcher <__ gnu_cxx:: __ normal_iterator, станд.:: средство выделения>>, станд.:: средство выделения, станд.:: средство выделения>>>>, повышение:: regex_traits>
:: construct_init (повышение:: basic_regex>> const&, повышение:: regex_constants:: _match_flags)'
и т.д...
Это ошибки компоновщика. Библиотека Boost regex не является библиотекой только для заголовков, как shared_ptr (например) - вам нужно компоновать с бинарной библиотекой .a или .lib или любой другой.
Вам необходимо установить ссылку на libboost_regex
. Добавьте -lboost_regex
в переключатель компилятора, если вы используете gcc.