2

我在我的测试中遇到以下错误:

未知文件:错误:在测试主体中抛出描述为“tr1::bad_weak_ptr”的 C++ 异常。

一次通过测试一行,我可以看到异常被抛出在我调用的一行:

MyClassSharedPointer myClassPointer(shared_from_this());

我需要一个指向代码正在执行的对象的指针,因为我需要将对象设置为它的一个成员的观察者(使用 boost::signals 来实现观察者)。该代码在正常执行时似乎工作正常,但从我的测试代码中我得到了这个错误。

4

2 回答 2

2

问题是在我的生产代码中 myClass 对象被引用为 shared_ptr 而在我的测试代码中我错误地将 myClass 对象声明为裸指针。这就解释了为什么shared_from_this()不起作用……因为this实际上不是 shared_ptr。

于 2012-01-24T23:14:26.870 回答
0

shared_ptr对我来说,问题是 myClass 在被调用之前没有 a shared_from_this(它被用于 a unique_ptr)。并且shared_from_this要求至少shared_ptr已经创建了一个。另请参阅此答案

于 2020-01-07T21:46:07.920 回答