C++ 如何在vector中打印内容<;独特的_ptr>;在Mac OS X上使用gdb
我试图在MacOSX上使用C++11功能。我下载了带有端口的g++4.8.1 这是测试代码C++ 如何在vector中打印内容<;独特的_ptr>;在Mac OS X上使用gdb,c++,debugging,c++11,gdb,unique-ptr,C++,Debugging,C++11,Gdb,Unique Ptr,我试图在MacOSX上使用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
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();
}
}
有什么问题吗?如何使用gdb创建唯一的_ptr complete类型以获取内容
补充
我注意到Xcode 4.5中的clang++支持c++11特性,所以最简单的方法可能是使用Xcode。我对命令行有一些问题(),但您的打印机似乎已经过时了:
我可以使用Xcode;lldb在Xcode上运行良好。您尝试过
($8)->get()
?似乎8美元是指向一个唯一指针的指针……肯尼TM:是的:“试图提取一个不是结构或联盟的值的组件”是一个错误消息。您可以尝试使用Ubuntu虚拟机,我拥有MacBook Pro但几乎停止了C++开发。我在全屏上放了一个Parallels Ubuntu实例,忘记了OSX:-)。太棒了,我从Ubuntu虚拟机上得到了比本机OS X(非视网膜显示)更好的字体显示@chico-我认为mac默认使用stdc++:非OSX特定:它不适用于我的GNU gdb(gdb)7.5
从端口安装。我还测试了从brew安装的gdb 7.6,但它也不起作用。我在调试目录中复制了.gdbinit以确保它已被读取。@ProSeek,它不能与libc++一起工作,因为您的环境是OS X,我不确定您是否正在使用它。GCC python漂亮的打印机支持libstdc++。
Cannot perform pointer math on incomplete type "unique_ptr<A, std::default_delet
e<A> >", try casting to a known type, or void *.