Как выкрутиться? как сделать так что бы отработал деструктор.
class a1
{
public:
a1(){std::cout << "create object =" << this <<std::endl;};
~a1(){std::cout << "destroy object =" << this <<std::endl;};
void test(){std::cout << "test bject =" << this <<std::endl;};
};
void test1(std::vector<boost::shared_ptr<boost::any>>* pV)
{
boost::shared_ptr<boost::any> ss;
for (int i=1; i<=2; i++)
{
ss.reset(new boost::any(new a1()));
pV->push_back(ss);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<boost::shared_ptr<boost::any>> v1;
test1(&v1);
v1.pop_back();
return 0;
}
Здравствуйте, nen777w, Вы писали:
N>Здравствуйте, Аноним, Вы писали:
А>>Как выкрутиться? как сделать так что бы отработал деструктор.
N>shared_ptr — может быть создан с вашим deleter-ом. смотрите документацию.
все равно не отрабатывает
void deleter( boost::any* ptr)
{
a1* aa1 = boost::any_cast<a1>(ptr);
delete aa1;
delete ptr;
}
void test1(std::vector<boost::shared_ptr<boost::any>>* pV)
{
boost::shared_ptr<boost::any> ss;
for (int i=1; i<=2; i++)
{
ss.reset(new boost::any(new a1()), deleter);
pV->push_back(ss);
}
}
a1* aa1 = boost::any_cast<a1*>(*ptr);
Здравствуйте, nen777w, Вы писали:
N>N>a1* aa1 = boost::any_cast<a1*>(*ptr);
N>
Спасибо!
Здравствуйте, uzhas, Вы писали:
пример:
http://ideone.com/R9diS