Инициализация массива указателей на определенную структуру с помощью конструктора - PullRequest
1 голос
/ 23 апреля 2020
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];
}

Это не будет работать. Я знаю, что где-то проблема в том, что конструктор по умолчанию недоступен, но я не знаю, как двигаться дальше.

1 Ответ

2 голосов
/ 23 апреля 2020

Вы хотите

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

, потому что Mystruct** p;

Вам также необходимо сохранить измерение и добавить деструктор, очень вероятно, что конструктор должен быть опубликован c.

Как сказано в замечании, чтобы иметь возможность выделить ваш массив Mystruct , что нужен конструктор без параметра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...