2014-02-05 4 views
0

Я пытаюсь сделать игру с tic tac toe, и я хочу передать мой 2d-массив позиций tic tac toe на мою функцию, которая рисует обновленную доску. Я хочу, чтобы значение параметра моей функции «updateBoard» было в состоянии принять в адресной книге на доске из основного, поэтому я могу использовать его во всей своей программе, не беспокоясь о сфере видимости. Я получаю сообщение об ошибке, как так, когда я скомпилировать его:Передача массива указателей символов на функцию в C++

ошибка C2664: 'updateBoard': не удается преобразовать параметр 1 из 'полукокса (*) [3] [3]' до «гольца * [] [3 ] '1> Указанные типы не связаны; преобразование требует reinterpret_cast, в стиле С литой или функция стиля бросание

Heres мой код:

#include "stdafx.h" 
#include <iostream> 

using namespace std; 

void updateBoard (char *n[3][3]) 
{ 

} 
int getMove() 
{ 
int input; 
cout <<"\n"; 
cout <<"1 for square 1| 2 for square 2| and so on... : "; 
cin >>input; 

return 0; 
} 

int main() 
{ 
const int WIDTH = 3; 
const int HEIGHT = 3; 
char board [WIDTH][HEIGHT] = {' ', ' ', ' ', 
           ' ', ' ', ' ', 
           ' ', ' ', ' '}; 
updateBoard(&board); 
char f; 
cin >>f; 
} 

ответ

2

можно сделать следующим образом

#include "stdafx.h" 
#include <iostream> 

using namespace std; 

const int WIDTH = 3; 
const int HEIGHT = 3; 

typedef char TBoard [WIDTH][HEIGHT]; 

void updateBoard (TBoard board, int width) 
{ 

} 

int main() 
{ 
TBoard board = {' ', ' ', ' ', 
       ' ', ' ', ' ', 
       ' ', ' ', ' '}; 
updateBoard(board, WIDTH); 
char f; 
cin >>f; 
} 

Как для ошибки то функция параметр должен быть определен как

void updateBoard (char (*n)[3][3]) 
{ 

} 

char (*n)[3][3] означает указатель на двумерный массив, а

char * n[3][3] означает двумерный массив указателей char *

И внутри этой функции вы должны написать

(*n)[i][j] 

для доступа к элементу с индексами я и к.

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