Я работал с STXXL и столкнулся с проблемой, связанной с картами, унаследованными от boost :: noncopyable … Для этого проекта я создал несколько карт с выражением:
stxxl::map<int, mapData, CmpIntGreater, 4096, 4096> node_map((stxxl::unsigned_type)(4096 * 4), (stxxl::unsigned_type)(4096 * 3));
Нет необходимости говорить, что жестко закодированные значения в конструкторе будут заменены, как только я решу эту проблему, но в любом случае я получаю ошибку:
C2248: 'boost::noncopyable_::noncopyable::noncopyable' : cannot access private member declared in class 'boost::noncopyable_::noncopyable'
Кто-нибудь еще сталкивался с этой проблемой с картами STXXL? Или у кого-нибудь есть общие советы или рекомендации по работе с не копируемыми объектами?
Спасибо за вашу помощь, ребята 🙂
Просто чтобы добавить официальный ответ, чтобы принять, моя проблема была в том, что у меня были некоторые функции, возвращающие карты по значению, и некоторые аргументы функции, передаваемые по значению. Как только это было исправлено, это работало как шарм! Итак, мораль истории, при использовании версии STXXL, которая наследуется от noncopyable, убедитесь, что все экземпляры вашего объекта STXXL используются с вашими функциями только по ссылке, а не по значению.
Других решений пока нет …