编辑:我最初将这个问题脱离了背景,所以我重新设计了它。我已经尽可能地保持不变,所以你的大部分回复仍然适用。
我无法理解如何实现一个接受指向指针数组的指针的构造函数。
我有以下类,其中包含bodies
类型的成员Body**
(即它是指向正文对象指针数组的指针)。
class Galaxy
{
private:
int n; // Number of bodies in galaxy.
Body** bodies; // Ptr to arr of ptrs to Body objects.
public:
Galaxy();
Galaxy(int, Body**);
// Some other member functions.
};
以下是构造函数的实现:
// Default constructor. Initializes bodies to null pointer.
Galaxy::Galaxy() : bodies(NULL) {}
// Alternate constructor. Here I try to perform a deep copy of bodiesIn.
Galaxy::Galaxy(int nIn, Body** bodiesIn)
{
n = nIn;
// Allocate memory for an array of n pointers to Body objects.
bodies = new Body*[n];
// Perform deep copy.
for (int i=0; i<n; i++)
{
bodies[i] = new Body;
*bodies[i] = *bodiesIn[i];
}
}
此方法是否合理,或者是否有一种构建此类对象的首选方法。
P.S。我意识到使用std::vector
对它进行编码会更容易,但是数组的大小不会改变,并且最小化内存使用很重要。
答案 0 :(得分:2)
你的功能有很多问题:
std::size_t
大小,专为它设计。 BTW:std::unique_ptr
不会增加任何开销,但提供了充足的舒适性和安全性。