QT显示“没有为课程找到RTTI符号”但工作正常

时间:2016-02-26 16:16:22

标签: qt c++11 lambda smart-pointers

我测试shared_ptr和lambda deleter如下代码。 它工作正常。但在调试时,显示:

RTTI symbol not found for class 'std::_Sp_counted_deleter<cls*, main::{lambda(cls*)#1}, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>'

我的代码有什么问题吗?

代码:

#include <iostream>
#include <memory>
using namespace std;

class cls{
public:
    void test(){
        cout << "ok\n";
    }

    virtual ~cls(){
       cout << "~cls()\n";
    }
};

typedef shared_ptr<cls> stptr;

int main(){
    auto del = [](cls* p){delete(p);};
    stptr p = stptr(new cls, del);
    p->test();
    return 0;
}
屏幕截图: screen shot

1 个答案:

答案 0 :(得分:0)

代码看起来不错。

我遇到了与GDB(使用GCC编译时QtCreator中的默认调试器)相同的问题。我认为这是GDB的一个问题,当它寻找涉及lambda的类型的RTTI时。 使用Clang和LLDB(如果系统上安装了Clang,则提供“套件”)我没有看到这个问题。