Google Mock和shared_from_this出现错误

Error with Google Mock and shared_from_this?

本文关键字:错误 this from shared Google Mock      更新时间:2023-10-16

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

未知文件:错误:带有描述的C++异常"tr1::bad_weak_ptr"在测试体中引发。

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

MyClassSharedPointer myClassPointer(shared_from_this());

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

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

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

相关文章: