2014-10-20 3 views
0

Я хочу хранить указатели (Bar *) в многомерном массиве из 2-х измерений. И я хочу получить доступ к этому массиву из указателя. Итак, я хочу инициализировать ** foo [] [] (или **** fo).Инициировать многомерный массив-указатель ****

Bar ****_bars; // declaration 
int n, m; // dimensions size 

_bars = new Bar ***; 
*_bars = new Bar **[n]; 
for (int i = 0; i < n; i++) { 
    *_bars[i] = new Bar *[m]; 
    for (int j = 0; j < m; j++) { 
     *_bars[i][j] = new Bar(); 
    } 
} 

Мое приложение аварии на линии *_bars[i][j] = new Bar();, когда я = 0 и у = 1.

+0

Почему бы не использовать вектор >? –

+0

'Бар **** _ бары;' Ничего себе вопрос о звездах сегодня, :-P! –

+0

'std :: vector' бесполезен, мои массивы статичны. – Sony

ответ

0

Возможно, ваша проблема связана с приоритетом операторов [] и * (см. this answer). Например, в вашем случае выражение *_bars[i] оценивается как:

*(_bars[i]) = .... 

Поскольку существует только один элемент в _bars[] вы бежите в «вопросы» с _bars[1]. То же самое с *_bars[i][j].

Но на самом деле, пожалуйста, используйте std::array<> или std::vector<> для чего-то вроде этого.

Смежные вопросы