Что не так с этим выражением c ++? [Дубликат]

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

5
задан Dalek 11 May 2015 в 23:13
поделиться

1 ответ

Вы не можете назначить непосредственно массив после его объявления. В основном ваш код такой же, как

int main()
{
    double arr[2][2];
    arr = { {1, 2}, {3, 4.5} }; // error
}

. Вы должны либо присвоить значение в объявлении

double arr[2][2] = { {1, 2}, {3, 4.5} };

, либо использовать цикл (или std::copy) для назначения элементов. Поскольку ваш массив представляется переменной-членом, вы также можете инициализировать его в списке инициализации конструктора:

 mcmc_dhs() : data(), cosmohandler(0.3,0.7,0.21,0.8,0.04), 
              lenseff(), intrvar(), 
              boundaries{{0,512},{0,512},{0.01,5.},{100.,3000.},{0.1,50}}
 { 
    // rest of ctor implementation
 }
8
ответ дан vsoftco 17 August 2018 в 17:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: