Google Mock和shared_from_this出现错误
Error with Google Mock and shared_from_this?
我在测试中遇到以下错误:
未知文件:错误:带有描述的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
。另请参阅此答案。
相关文章:
- C++错误:"error: int aaa::bbb is protected within this context"
- 类中的数组变量C++导致"was not declared in this scope"实现文件的一个函数中错误,但在构造函数中不会导致错误
- 错误:类没有名为"ThisW"的成员;你是说"这个"吗?但是代码没有说"ThisW",它已经说了"This"
- C++ 中的构造函数、继承、堆栈、堆、this-pointer 和段错误
- C++ Boost - 序列化错误 - 将"const B"作为"this"参数
- 整体模板参数。错误:在常量表达式中使用'this'
- 如何解决"cout was not declared in this scope"错误?
- 从 std::ostream 重载 << 运算符时,为什么编译器会给出"too many parameters for this operator function"错误?
- 即使包含 <time.h 后仍"‘CLOCK_PER_SEC’ was not declared in this scope"错误>
- 使用 boost::序列化代码将 *this 传递给模板函数会产生错误
- С 错误"s1, s2 are used uninitialised in this function"
- 有没有办法绕过错误"因为'this'参数会丢弃限定符?
- 为什么直接传递"this"指针来存档是一个错误,而另一个相同类型的指针是可以的?
- "this" Lambda 捕获的是不正确的。海湾合作委员会编译器错误?
- C++ 中的"this declaration has no storage class or type specifier"错误
- 错误"this declaration has no storage class or type specifier"
- C++ Lambda:访问 lambda 中的静态方法会导致错误'this was not captured for this lambda function'
- 得到错误:' this '对于静态成员函数不可用,即使函数不是静态的
- C++:关键字错误'this'
- c++ 服务正在停止,出现错误"this application has requested the runtime to terminate it an unusual way"