我正在尝试在 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)