Ausdruck muss ein Zeiger auf ein komplettes Objekt Typ
Ich versuche auf die Werte zuzugreifen, die in einem mehrdimensionalen array mit zwei Ganzzahlen. Das array deklariert ist in einer anderen Quelldatei, und ich bin mit einer extern-Deklaration an der Spitze des problem-source-Datei.
in der Datei, wo Ihr erklärt, ich kann auf die Werte, aber wenn ich kopieren und fügen Sie den gleichen code-Zeile über der compiler teilt mir mit, dass der Ausdruck muss ein Zeiger auf ein komplettes Objekt-Typ.
Ich bin neu in C, und der Zeiger, so dass ich nicht wirklich wissen, was Los ist. Ich würde schätzen, irgendwelche Ideen.
extern struct piece board[8][8];
void move()
{
char row;
int column;
int rowNumber = 0;
printf("row: ");
scanf("%c",&row);
fflush(stdin);
printf("column: ");
scanf("%d",&column);
column--;
switch(row)
{
case 'A': rowNumber = 0; break;
case 'B': rowNumber = 1; break;
case 'C': rowNumber = 2; break;
case 'D': rowNumber = 3; break;
case 'E': rowNumber = 4; break;
case 'F': rowNumber = 5; break;
case 'G': rowNumber = 6; break;
case 'H': rowNumber = 7;
}
printf("\n your row is %d and column is %d",rowNumber,column);
struct piece temp = &board[rowNumber][column];
}
und das array selbst:
struct piece board[8][8] = {{{0,0,blackRook,"Rook"},{0,1,blackKnight,"Knight"}, {0,2,blackBishop,"Bishop"},{0,3,blackQueen,"Queen"},{0,4,blackKing,"King"}, {0,5,blackBishop,"Bishop"},{0,6,blackKnight,"Knight"},{0,7,blackRook,"Rook"}},
{{1,0,blackPawn,"Pawn"}, {1,1,blackPawn,"Pawn"},{1,2,blackPawn,"Pawn"},{1,3,blackPawn,"Pawn"},{1,4,blackPawn,"Pawn"},{1,5,blackPawn,"Pawn"},{1,6,blackPawn,"Pawn"},{1,7,blackPawn,"Pawn"}},
{0},{0},{0},{0},
{{6,0,whitePawn,"Pawn"},{6,1,whitePawn,"Pawn"},{6,2,whitePawn,"Pawn"},{6,3,whitePawn,"Pawn"},{6,4,whitePawn,"Pawn"},{6,5,whitePawn,"Pawn"},{6,6,whitePawn,"Pawn"},{6,7,whitePawn,"Pawn"}},
{{7,0,whiteRook,"Rook"},{7,1,whiteKnight,"Knight"},{7,2,whiteBishop,"Bishop"},{7,3,whiteQueen,"Queen"},{7,4,whiteKing,"King"},{7,5,whiteBishop,"Bishop"},{7,6,whiteKnight,"Knight"},{7,7,whiteRook,"Rook"}}};
sorry wegen der Formatierung, es sieht viel hübscher aus, als in visual studio. Die ersten beiden und die letzten beiden arrays sind gefüllt mit der struct-Stück, und der rest ist 0. Der leere Werte nicht zu sein scheinen Probleme woanders in meinem code.
EDIT: und hier ist das Stück-definition
struct piece
{
int row;
int column;
int weight;
char name[20];
};
piece
Struktur.
InformationsquelleAutor James Kerr | 2012-06-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Abgesehen von der Tatsache, dass
&board[r][c]
ist der Typstruct piece *
und nichtstruct piece
außerdem müssen Sie die header-Datei definiertpiece
. Der compiler sagt Ihnen, dass es nicht genügend Informationen überstruct piece
.InformationsquelleAutor ChrisWue
Ich denke mal dein Fehler ist hier passiert :
Du hast vergessen die * nach dem Stück
funktionieren sollte.
Sollten Sie auch die Kopfzeile, in der das Stück struct definiert ist.
InformationsquelleAutor Clément
Die folgende Zeile ist falsch. temp ist nicht die Zeiger-variable an alle.
Wenn Sie wollen einfach nur einen Zeiger für ein element des Arrays dann
Wenn Sie möchten, erstellen Sie einen Zeiger für die gesamte zwei-dimensionales array, dann sollte es
InformationsquelleAutor Jay
Extern ist nicht genug, müssen Sie auch die .h, wo der struct deklariert ist.
InformationsquelleAutor Tony Philipsson