Я работаю с STXXL, и я столкнулся с проблемой с картами, наследующими от boost :: noncopyable ... Для этого проекта я создаю несколько карт с помощью заявление:Ускорить ошибку при копировании STXXL
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 map.h (строка 363, в основном прямо в конце определения класса карты, поэтому довольно бесполезно). Я предполагаю, что хочу убедиться в том, будет ли это мой экземпляр, который я показал выше, что вызывает эту ошибку, или это будет где-то еще в моем коде. Пока это не мое создание, я уверен, что могу найти ошибку :) – Andrewziac
Определение объекта node_map выглядит нормально. Ищите места, где вы передаете значение по значению функции. Или, может быть, это член другого объекта, который вы забыли сделать явно не скопированным. –