2015-12-03 3 views
0

В моей основной функции Я создаю массив:Обзор моего C++ многомерного указателя массива

char arr[0x10000][9];

В другом классе B я хотел бы иметь указатель на этот массив:

typedef char memory[0x10000][9]; 

class B{ 
    public: 
     B(memory* mem); 
    private: 
    memory* _mem; 
} 

и реализация

B::B(memory* mem){ 
    this->_mem = mem; 
} 

И главная функция:

.... 
char arr[0x10000][9]; 
arr[0][0] = 7; 
arr[0][1] = 7; 
// and so on... 
B* b = new B(&arr, true); 
... 

К сожалению, я могу получить доступ только _mem[0][0] правильно, если я достигаю _mem[0][1], то я получаю случайное значение, но не тот, который я поставил в основном методе.

+1

Кому принадлежит этот указатель (= он отвечает за освобождение этой памяти?) Скопированы ли ваши объекты (по значению)? Передано ли право собственности? –

+2

[Что такое правило трех?] (Http://stackoverflow.com/q/4172722/3309790) – songyuanyao

+0

Основная функция «владеет» массивом, и я хочу передать ее ссылкой на мой класс B, который будет только чтение из этого массива. Я отредактировал свой вопрос, чтобы сделать его более ясным. – netik

ответ

1

Используйте (*_mem)[0][1]; чтобы получить стоимость. у вас есть указатель на двумерный массив как элемент данных

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