如何解决即使将结构重新定义为typedef并注释typedef行,为什么仍可以继续使用覆盖的结构?
即使将结构重新定义为typedef并注释typedef行,为什么仍可以继续使用覆盖的结构?
#include <iostream>
#define MAZE_SIZE 21
#define MENU_H_SIZE 30
#define MENU_V_SIZE 120
using namespace std;
char strMaze[MAZE_SIZE][MAZE_SIZE] = {};
struct _tagPlayerPos
{
int x;
int y;
};
//typedef _tagPlayerPos POINT; <- here
//typedef _tagPlayerPos* PPOINT; <- here
POINT tPlayerPos;
POINT tStartPos;
POINT tEndPos;
int main()
{
setMaze(strMaze,&tPlayerPos,&tStartPos,&tEndPos
}
void setMaze(char Maze[MAZE_SIZE][MAZE_SIZE],PPOINT pPlayerPos,PPOINT pStartPos,PPOINT pEndPos)
{
pStartPos->x = 1;
pStartPos->y = 0;
pEndPos->x = 18;
pEndPos->y = 19;
*pPlayerPos = *pStartPos;
strcpy_s(Maze[0],"02000000000000000000");
strcpy_s(Maze[1],"01111110001100000000");
strcpy_s(Maze[2],"00000011111000110000");
strcpy_s(Maze[3],"00000010010100100000");
strcpy_s(Maze[4],"00000110011111100000");
strcpy_s(Maze[5],"00000100000100000000");
strcpy_s(Maze[6],"00000100000111000000");
strcpy_s(Maze[7],"00011111000001000000");
strcpy_s(Maze[8],"00010001111100000000");
strcpy_s(Maze[9],"00010000001000000000");
strcpy_s(Maze[10],"01111000001111000000");
strcpy_s(Maze[11],"00001000000100000000");
strcpy_s(Maze[12],"00011000000111111100");
strcpy_s(Maze[13],"00010000001100000100");
strcpy_s(Maze[14],"00011111000000001100");
strcpy_s(Maze[15],"00000001000000001000");
strcpy_s(Maze[16],"00011101000111111000");
strcpy_s(Maze[17],"00000101000000000000");
strcpy_s(Maze[18],"00000111111111111110");
strcpy_s(Maze[19],"00000000000000000030");
}
解决方法
即使将结构重新定义为typedef并注释typedef行,为什么仍可以继续使用覆盖的结构?
您不能,编译器不知道这些名称,您肯定缺少一些东西,也许您在main包含的其他文件中有这些typedef,很难说,唯一可以肯定的是,您只能在this online compiler中确认,仅显示的代码将永远不会编译。
无论如何,在C ++中,您不需要为该结构使用typedef,您可以像这样声明该结构:
struct POINT
{
int x;
int y;
};
并使用它,不需要struct
关键字来声明变量或键入POINT
。
POINT tPlayerPos;
POINT tStartPos;
POINT tEndPos;
要注意的另一件事是“ overridden” 可能不是您的意思,override
关键字的含义不同。
在您的代码中,我也看不到struct
的任何重新定义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。