3

我正在尝试在 Mac OS X 上使用 C++11 功能。我下载了带有端口的 g++ 4.8.1。

这是测试代码。

class A
{
    int x;
public:
    A() {}
    ~A() {}
    A(A& a) {}
    A(int x) {this->x = x;}
    int get() {return x;}
};

int main()
{
    vector<unique_ptr<A>> v;
    auto a = new A(10);
    unique_ptr<A> pa(a);
    v.push_back(move(pa)); // move(pa);
    for (auto& i: v)
    {
        cout << i->get();
    }
}

它在 g++ 4.8 下编译得很好,我可以使用 gdb 对其进行调试。在此页面vector v之后,我可以使用命令打印出 STL 向量。

但是,使用带有 unique_ptr 的向量,我在 gdb 中收到此错误消息。

在此处输入图像描述

Cannot perform pointer math on incomplete type "unique_ptr<A, std::default_delet
e<A> >", try casting to a known type, or void *.

它有什么问题?如何使 unique_ptr 完整类型以使用 gdb 获取内容?

添加

我注意到 Xcode 4.5 中的 clang++ 支持 c++11 功能,所以最简单的方法可能是使用 Xcode。我对命令行有一些问题(xcode 上的 lldb 与独立上的 lldb

4

2 回答 2

0

为 GDB 使用 python 打印机,您的打印机似乎已被弃用:

在此处输入图像描述

于 2013-06-22T17:31:46.340 回答
0

在此处输入图像描述

我可以使用 Xcode;lldb 在 Xcode 上运行良好。

于 2013-06-23T00:52:22.237 回答