У меня есть следующий код, в котором Boost.Local использует функцию обратного вызова для загрузки файла mo.Для меня эта функция называется findMo, и я пытаюсь привязать ее к объекту, чтобы сохранить побочные эффекты, которые я добавляю в закрытые члены moFinder.
class moFinder
{
public:
moFinder(string const& wantedFormat)
: format(wantedFormat)
{
// ...
}
std::vector<char> findMo(std::string const& filePath, std::string const& encoding)
{
// ...
}
};
std::locale createLocale(string const& name, string const& customTranslation,
string const& path, string const& domain, string const& pathFormat)
{
// ...
namespace blg = boost::locale::gnu_gettext;
blg::messages_info info;
info.paths.push_back(path);
info.domains.push_back(blg::messages_info::domain(domain));
moFinder finder(pathFormat);
blg::messages_info::callback_type callbackFunc;
callbackFunc = boost::bind(moFinder::findMo, boost::ref(finder));
info.callback = callbackFunc;
// ...
}
При компиляции я получаю следующую ошибку:
ошибка: недопустимое использование нестатической функции-члена 'std :: vector moFinder :: findMo (const std :: string &, const std :: string &)'
В строке, где я вызываю boost :: bind.
Что я делаю, чтобы заслужить эту ошибку?