boost::xpressive::sregex m_rx;
является экземпляром, и вы только направили его вперед, включив ..._fwd.hpp
, другими словами, он неполон.
#include <boost/xpressive/xpressive.hpp>
должен решить проблему.
Если вы действительно хотите перенаправить объявление вашего типа, вам придется изменить его на указатель (нерабочий код, похоже, что boost использует static :: compile (...)):
HPP:
#include <boost/xpressive/xpressive_fwd.hpp>
namespace Bob
{
class RegexReplace
{
public :
boost::xpressive::sregex* m_rx;
std::string m_str;
RegexReplace(const char* strSearch, const char* strReplace);
~RegexReplace();
// @todo Implement move and copy semantics
};
} // namespace Bob
касты:
#include <boost/xpressive/xpressive.hpp>
namespace Bob
{
RegexReplace::RegexReplace(const char* strSearch, const char* strReplace) :
m_rx{new boost::xpressive::sregex}
{
......
}
RegexReplace::~RegexReplace() {
delete m_rx;
}
}