boost :: pool错误C2248

时间:2011-11-27 14:11:21

标签: boost pool

#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 个答案:

答案 0 :(得分:1)

我看不出你要对所显示的代码做什么。

此外,可能是错误源自您未显示的代码,但这是我的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;
}