Czy można zwiększyć :: smart_ptr, takie jak scoped_ptr i shared_ptr, w kontenerach standardowych, takich jak std :: map?Czy można zwiększyć :: smart_ptr używać w kontenerach standardowych?
class SomeClass
{
std::map<int,boost::scoped_ptr<SomeOtherClass> > a_map;
};
Jako boost::smart_ptr can be used for polymorphism, czy w tym przypadku jest również prawdą? Czy zniszczenie kontenera spowoduje prawidłowe zniszczenie podklas?
To samo co poprzednio: czy próbowałeś? – BatchyX
@BatchyX - nope. W moim przypadku jest to dużo refaktoryzacji, więc raczej pytam. Poza tym, jeśli odpowiedź nie dotyczy StackOverflow, powinno być :) – Jonathan
Byłem tam, zrobiłem to. Ale nauczyłem się od niego, w większości przypadków można napisać 20-30 liniowych programów testowych, które sprawdzą/unieważnią pomysł w mniej niż 5 minut. 'struct test {~ test() {std :: cout <<" ~ test "<< std :: endl; }}; int main() {wektor> v; v.push_back (make_shared ()); } '(lub coś w tym wierszu, trudno napisać kod w komentarzu). Następnie skompiluj i sprawdź, czy destruktory są wywoływane, czy nie. Spróbuj ponownie za pomocą 'scoped_ptr' i zobacz, czy kod się kompiluje. Wrzuć kilka innych operacji ('resize', ...) i sprawdź. –