我正在动态创建MyClass的3个对象。

MyClass *ptr = new MyClass[3];

我假设ptr是所述对象的第一个实例的地址。我可以
(*ptr).doStuff();

但是,当我尝试访问第二个对象时,通过
(* (ptr + sizeof(MyClass)) ).doStuff();

引发异常。我应该如何到达其他物体?

最佳答案

以下是选项(从最推荐到最不推荐):

ptr[1].doStuff();
(ptr+1)->doStuff();
(*(ptr+1)).doStuff();
((MyClass*)((char*)ptr+sizeof(MyClass)))->doStuff();
(*(MyClass*)((char*)ptr+sizeof(MyClass))).doStuff();

关于c++ - 通过指针算法访问 “new”创建的单个对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23047009/

10-11 22:45
查看更多