2015-08-14 5 views
1

В настоящее время я работаю над рудиментарным симулятором для игры Boggle, и прямо сейчас я дошел до того, что мне нужно использовать указатели на объект в вызове функции. Тем не менее, я не уверен, как это сделать, и до сих пор мой поиск на этом сайте и в других местах не оказался плодотворным, поскольку, как я видел, вопросы не касались указаний на объекты. Ниже приведен мой код для функции, вызываемой из класса, инициализации объектов и моих попыток вызова функций. Функция setAdjacency находится в классе boggleNode.Использование указателей на объекты в качестве аргументов функции

void setAdjacency(boggleNode * topleft = NULL, boggleNode * top = NULL, boggleNode * topright = NULL, 
boggleNode * left = NULL, boggleNode * right = NULL, boggleNode * botleft = NULL, boggleNode * bot = NULL, boggleNode * botright = NULL){ 
    adjacency[0] = topleft; 
    adjacency[1] = top; 
    adjacency[2] = topright; 
    adjacency[3] = left; 
    adjacency[4] = right; 
    adjacency[5] = botleft; 
    adjacency[6] = bot; 
    adjacency[7] = botright;    //For keeping track of which nodes are adjacent to which other ones. 
} 

Эти частные переменные в boggleNode:

private: 
boggleNode * adjacency[8]; 
char letter; 
bool isUsed; 

"Совет" определяется следующим образом:

boggleNode * board = new boggleNode[16]; 

И, наконец, здесь, где я пытаюсь вызвать функцию смежности в моей основной функции:

board[0].setAdjacency(board[1], board[4], board[5]); 

Я знаю, что в настоящее время аргументы в вызове этой функции являются ссылками, в то время как они должны быть указателями в определении функции. Как получить правильный вызов функции и определение функции?

+0

У вас есть ошибка компилятора, которую вы можете отправить? – pdel

+0

'Я знаю, что в настоящее время аргументы в этом вызове функции являются ссылками. Я не вижу ссылок в этом вызове. Вы передаете экземпляры 'boggleNode'. Может быть, вы путаетесь с 'Java'? – PaulMcKenzie

ответ

1

Значением указателя на объект является адрес объекта. Для того, чтобы получить адрес объекта, вы должны использовать «AddressOf» оператор: &

board[0].setAdjacency(&board[1], &board[4], &board[5]); 
0

я получил некоторую помощь от моего друга, и я понял, ответ. Мне нужно было использовать оператор «addressof» плюс дополнительные скобки (например, & (плата [0])).

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