2010-01-23 2 views
0

Вот моя структура:Доступ к значению из структуры с помощью указателя? (C++)

struct Checker 
{ 
    short row; 
    short col; 
    unsigned short number; 
    short color; 
}; 

Теперь, я должен также сделать еще один-структуру для представления шашек доски:

struct Board 
{ 
    Checker checkers[2][13]; // Zeroth entry of 13 is not used. 
    Checker *grid[8][8]; // each entry holds Null or an address 
         // of an element in the checkers array 
}; 

Если это имеет значение, шашки [0-1] представляет какая сторона, [1-12] - уникальные числа для каждой части.

В любом случае, у меня есть сетка 8x8, которая либо указывает на NULL, либо элемент проверки. То, что я хочу сделать, - это получить доступ к этой проверке не по ее уникальному идентификатору (например, шашки [0] [5]), а вместо этого по его позиции в сетке.

Как я могу получить доступ к элементам данных таким образом? Я попытаюсь подвести итог:

Объявление о проведении BoardBoard. Настройте сетку так, чтобы у меня была шашка на [0][0]. Это будет checkers[0][1]. Поэтому вместо того, чтобы делать cout <<checkers[0][1].number, я хотел бы иметь возможность распечатать номер шашки, не зная его идентификатор, и, зная, что эта специальная проверка находится на [0][0]

Спасибо.

ответ

3
cout << grid[0][0]->number; 

Если сетка представляет собой 2-мерный массив указателей на Checker структур, а затем сетки [0] [0] является указателем на Checker в этом месте (0, 0). Синтаксис -> разыгрывает указатель, а затем обращается к полю number.

Если я не понимаю ваш вопрос или мой ответ не удался, сообщите мне, и я с радостью удалю. Уже поздно. :)

+0

Отлично работает, спасибо! – kevin

+3

Обратите внимание, что 'x-> y' эквивалентно' (* x) .y' (за исключением случаев, когда перегрузка оператора входит в игру). –

+1

Но если они не эквивалентны при перегрузке оператора, запустите разработчика, который сделал это :-( –

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