boost :: pool ошибка C2248 - PullRequest
       13

boost :: pool ошибка C2248

1 голос
/ 27 ноября 2011
#define BOOSTPOOL boost::pool<>
BOOSTPOOL GetPool()
{
    BOOSTPOOL AppClass1Pool(sizeof(AppClass1));
    return AppClass1Pool;
}

void* AppClass1::operator new(size_t sz)
{
    BOOSTPOOL temp = GetPool();
    void* p =(void*) temp.malloc();
    return p;
}

не может получить доступ к приватному члену (в “boost::simple_segregated_storage<SizeType>”) Я не могу использовать пул, как это?

1 Ответ

1 голос
/ 27 ноября 2011

Я не вижу, что вы пытаетесь сделать с показанным кодом.

Кроме того, есть вероятность, что ошибка возникла в коде, который вы не показываете, но вот мои 5p:

Пулы не копируются .Я предполагаю, что в C ++ 03 вы получаете can not access to the private member, потому что конструктор копирования является приватным.В C ++ 11 вы можете ожидать:

error: use of deleted function ‘boost::pool<>::pool(const boost::pool<>&)’

Вот исправленная версия, которая, вероятно, делает то, что вы хотели:

// Uncomment this to stub out all MT locking
// #define BOOST_NO_MT

#include <boost/pool/pool.hpp>

struct AppClass1
{
    int data[10];
    void* operator new(size_t sz);
};

#define BOOSTPOOL boost::pool<>
BOOSTPOOL& GetPool()
{
    static BOOSTPOOL AppClass1Pool(sizeof(AppClass1));
    return AppClass1Pool;
}

void* AppClass1::operator new(size_t sz)
{
    BOOSTPOOL& temp = GetPool();
    void* p =(void*) temp.malloc();
    return p;
}

int main(int argc, const char *argv[])
{
    return 0;
}
...