2011-11-27 4 views
1
#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>”에서) 비공개 멤버에 액세스 할 수 없습니다?부스트 : 풀 오류 C2248

답변

1

표시된 코드로 무엇을 하려는지 알 수 없습니다.

또한, 기회는 오류가 당신이 표시되지 않는 코드에서 유래하는 것이 있지만, 여기 내 5P는 다음과 같습니다

풀은 비 복사 가능한입니다. 복사 생성자가 private이기 때문에 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; 
} 
+0

덕분에, 나는 당신의 도움으로 해결했습니다. – YangH