【发布时间】:2021-07-01 18:33:36
【问题描述】:
gameBoard *InitBoard(char *space, int nos,void (*toStringGameboard)(void *S), int (* getNumberOfSpaces) (void * S),char * (* getTypeOfSpace)(void * S))
{
gameBoard *gb= (gameBoard *) malloc(sizeof(gameBoard));
strcpy(gb->typeOfSpace, space);
//implement the function pointers
return gb;
}
char * getTypeOfSpace(void *board) {
return ???;
}
int getNumberOfSpaces(void * board) {
return ???;
}
void toStringGameboard(void * S){
//print out something informative and cute
return;
}
我对 void 指针很困惑。到目前为止,对于第一种方法,这就是我所拥有的。 本质上,因为我不明白发生了什么, 我刚刚重复了函数的参数以尝试初始化它们。 这是正确的,如果不是,我从这里去哪里?
gameBoard *InitBoard(char *space, int nos,void (*toStringGameboard)(void *S),
int (* getNumberOfSpaces) (void * S),char * (* getTypeOfSpace)(void * S))
{
gameBoard *gb= (gameBoard *) malloc(sizeof(gameBoard));
strcpy(gb->typeOfSpace, space);
void(*toStringGameboard)(void *S);
int(*NumberOfSpaces)(void *S);
char(*getTypeOfSpace)(void *S);
return gb;
}
对于第二种方法,我想我可以使用写在 gameBoard.h 中的 char typeOfSpace[20],但我不完全确定如何去做:
typedef struct gameBoard {
char typeOfSpace[20]; //"WIN", "BACK", "FORWARD", "SAFE"
int numberOfSpaces; //if the type of space is "BACK", "FORWARD", then this is the number of spaces to move
int (* getNumberOfSpaces) (void * S);
void (* toStringGameboard)(void * S);
char * (* getTypeOfSpace)(void * S);
}gameBoard;
gameBoard *InitBoard(char *typeOfSpace, int nos,
void (*toStringGameboard)(void *S),
int (* getNumberOfSpaces) (void * S),
char * (* getTypeOfSpace)(void * S));
char * getTypeOfSpace(void *board);
int getNumberOfSpaces(void *board);
void toStringGameboard(void *board);
不知道如何做后两个,任何帮助都会很棒!
【问题讨论】:
标签: c arraylist void-pointers