using std:vector array of boost::scoped_ptr
Hi Folks,
I am trying to create an vector array of boost::scoped_ptr, and am
unable to complie a simple code...
I get the following error message on Visual studio 2005 (vc++ 8.0)
with boost 1.35
c:\program files\microsoft visual studio 8\vc\include\vector(1125) :
error C2248: 'boost::scoped_ptr<T>::scoped_ptr' : cannot access
private member declared in class 'boost::scoped_ptr<T>'
1> with
1> [
1> T=Test
1> ]
1> c:\boost\include\boost-1_35\boost\scoped_ptr.hpp(45) : see
declaration of 'boost::scoped_ptr<T>::scoped_ptr'
1> with
1> [
1> T=Test
1> ]
1> c:\program files\microsoft visual studio 8\vc\include\vector
(1117) : while compiling class template member function 'void
std::vector<_Ty>::_Insert_n(std::_Vector_iterator<_Ty,_Alloc>,__w64
unsigned int,const _Ty &)'
1> with
1> [
1> _Ty=boost::scoped_ptr<Test>,
1> _Alloc=std::allocator<boost::scoped_ptr<Test>>
1> ]
1> e:\tmp\myfirstmultithread\myfirstmultithread
\myfirstmultithread.cpp(131) : see reference to class template
instantiation 'std::vector<_Ty>' being compiled
1> with
1> [
1> _Ty=boost::scoped_ptr<Test>
1> ]
I am attaching the code
--- Start of code --
include <iostream>
#include <vector>
#include <boost/scoped_ptr.hpp>
class Test{
int x_axis;
int y_axis;
public:
Test():x_axis(0),y_axis(0){}
Test(int x,int y):x_axis(x), y_axis(y){}
int add(){
return x_axis+y_axis;
}
};
Test* createTestFactory();
int _tmain(int argc, _TCHAR* argv[])
{
/*Test t = new Test(1,2);
t.add();*/
boost::scoped_ptr<Test> t_scoped (new Test(1,3));
Test *t1 = createTestFactory();
int retval = t1->add();
boost::scoped_ptr<Test> t2(createTestFactory());
std::vector<boost::scoped_ptr<Test>> myvec;
myvec.push_back(t2);
return 0;
}
Test* createTestFactory()
{
return new Test();
}
-- End of code ---
I will be grateful if you can suggest a way to create a vector of
scoped pointers
Cheers