我的测试中出现以下错误:
未知文件:错误:C ++异常及其描述在测试正文中抛出了“ tr1 :: bad_weak_ptr”。
一次可以单步执行测试,我可以看到异常在我调用的行上引发:
MyClassSharedPointer myClassPointer(shared_from_this());
我需要一个指向要在其中执行代码的对象的指针,因为我需要将该对象设置为其成员之一的观察者(使用boost :: signals实现观察者)。该代码在正常执行时似乎可以正常工作,但是从我的测试代码中我收到此错误。
问题是,在我的生产代码中,myClass对象被引用为shared_ptr,而在我的测试代码中,我错误地将myClass对象声明为裸指针。这就解释了为什么shared_from_this()
无法正常工作...因为this
实际上不是shared_ptr。
对我来说,问题是myClass在调用shared_ptr
之前没有shared_from_this
(正在unique_ptr
中使用)。并且shared_from_this
要求至少已经创建一个shared_ptr
。另请参阅this answer。