Google Mock和shared_from_this错误?

问题描述 投票:1回答:2

我的测试中出现以下错误:

未知文件:错误:C ++异常及其描述在测试正文中抛出了“ tr1 :: bad_weak_ptr”。

一次可以单步执行测试,我可以看到异常在我调用的行上引发:

MyClassSharedPointer myClassPointer(shared_from_this());

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

c++ shared-ptr googlemock
2个回答
1
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.