у меня есть два класса, у одного есть виртуальная функция
class OKClass
{
public:
void PrintTest() {
std::cout << "print from OK class " << std::endl;
}
};
class CrashClass
{
public:
virtual void PrintTest() {
std::cout << "print from virtual Crash class " << std::endl;
}
};
Я поместил два класса в следующий тестовый код
сбой CrashClass при вызове func ()
OkClass выводит слово «print from OK class», чего не должно быть. так как тест shared_ptr был выпущен, когда выходит за рамки.
Может ли кто-нибудь объяснить мне, почему эта странная вещь происходит ??
спасибо
boost::function0<void> func;
{
boost::shared_ptr<CrashClass> test(new CrashClass);
func = boost::bind(&CrashClass::PrintTest, boost::bind(&CrashClass::wptr::lock, CrashClass::wptr(test)));
}
func();
извините за нехватку информации
typedef boost::weaked_ptr<CrashClass> wptr
Я знаю причину, по которой первый класс работает, а второй разбился
и я использую Functor для решения этой проблемы
все равно спасибо