用构造函数初始化一个指向定义结构的指针数组。

问题描述 投票:0回答:1
struct Mystruct
{
  int x;
  int y;
  Mystruct(int x, int y);
}
------------------------
class Myclass
{
  Mystruct** p;
  Myclass(int n);
}
------------------------
Myclass::Myclass(int n)
{
  this->p = new Mystruct*[n];
  for ( int i = 0; i < n; i++ )
    this->p[i] = new Mystruct[n];
}

这将无法工作。我知道问题出在某个地方,默认构造函数不可用,但我不知道如何继续前进。

c++ arrays pointers constructor
1个回答
2
投票

你想

Myclass::Myclass(int n)
{
  this->p = new Mystruct*[n];
  for ( int i = 0; i < n; i++ )
    this->p[i] = new Mystruct[n];
}

因为 Mystruct** p;

你还需要保存维度,并且要添加一个destructor,很可能构造函数必须是public的。

就像在一句话中说的那样,为了能够分配你的数组中的 肌理 需要一个不带参数的构造函数

© www.soinside.com 2019 - 2024. All rights reserved.