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