使用的是vs2019,第一个代码和第二个代码分属两个头文件中的类,问题出现在第二个代码最后的SetLine函数上,运行直接显示出现一个断点(其他的都没给),经测试,直接将第二个代码更为第三个代码无问题,且第二个代码函数内部增加断点时晚于BUG的出现,调用第一个代码中的其他函数操作结构体(gridLine)时无问题。
另附有两个库文件的全部内容,在第四、第五个代码,第六个代码把有用的部分整合在了一起。
求教大佬!!!
第一个代码
#pragma once
#include <graphics.h>
struct LINEDATA
{
LINESTYLE style;
COLORREF color;
};
class LINE
{
public:
void SetLine(LINEDATA lineData);
void SetLine(LINEDATA& lineData, int thickness, COLORREF color);
};
void LINE::SetLine(LINEDATA lineData)
{
setlinecolor(lineData.color);
setlinestyle(&lineData.style);
return;
}
第二个代码
class GAME
{
private:
LINE line;
LINEDATA gridLine;
public:
GAME();
void GridDraw(int x, int y);
void FlagDraw(int x, int y);
};
void GAME::GridDraw(int x, int y)
{
setfillcolor(RGB(220, 220, 220));
line.SetLine(gridLine);
fillrectangle(x, y, x + 10, y + 10);
return;
}
第三个代码(省去了部分已有内容)
void GAME::GridDraw(int x, int y)
{
setfillcolor(RGB(220, 220, 220));
setlinecolor(gridLine.color);
setlinestyle(&gridLine.style);
//line.SetLine(gridLine);
fillrectangle(x, y, x + 10, y + 10);
return;
}
第四个代码
#pragma once
#include <graphics.h>
struct LINEDATA
{
LINESTYLE style;
COLORREF color;
};
class LINE
{
public:
void SetLine(LINEDATA lineData);
void SetLine(LINEDATA& lineData, int thickness, COLORREF color);
};
void LINE::SetLine(LINEDATA lineData)
{
setlinecolor(lineData.color);
setlinestyle(&lineData.style);
return;
}
void LINE::SetLine(LINEDATA& lineData, int thickness, COLORREF color)
{
lineData.color = color;
lineData.style.thickness = thickness;
return;
}
第五个代码
#pragma once
#include <graphics.h>
#include "LOADING.h"
#include "LINE.h"
class GAME
{
private:
LINE line;
LINEDATA gridLine;
public:
GAME();
void GridDraw(int x, int y);
void FlagDraw(int x, int y);
};
GAME::GAME()
{
LOADING loading;
getlinestyle(&gridLine.style);
line.SetLine(gridLine, 2, RGB(248, 248, 255));
Sleep(1000);
closegraph();
initgraph(300, 160);
for (int i = 0;i < 30;i++)
{
for (int j = 0;j < 16;j++)
{
GridDraw(i * 10, j * 10);
}
}
return;
}
void GAME::GridDraw(int x, int y)
{
setfillcolor(RGB(220, 220, 220));
setlinecolor(gridLine.color);
setlinestyle(&gridLine.style);
//line.SetLine(gridLine);
fillrectangle(x, y, x + 10, y + 10);
return;
}
void GAME::FlagDraw(int x, int y)
{
;
}
第六个代码
#include <graphics.h>
struct LINEDATA
{
LINESTYLE style;
COLORREF color;
};
class LINE
{
public:
void SetLine(LINEDATA lineData);
void SetLine(LINEDATA& lineData, int thickness, COLORREF color);
};
void LINE::SetLine(LINEDATA lineData)
{
setlinecolor(lineData.color);
setlinestyle(&lineData.style);
return;
}
void LINE::SetLine(LINEDATA& lineData, int thickness, COLORREF color)
{
lineData.color = color;
lineData.style.thickness = thickness;
return;
}
class GAME
{
private:
LINE line;
LINEDATA gridLine;
public:
GAME();
void GridDraw(int x, int y);
void FlagDraw(int x, int y);
};
GAME::GAME()
{
//LOADING loading;
initgraph(50, 50);
getlinestyle(&gridLine.style);
line.SetLine(gridLine, 2, RGB(248, 248, 255));
Sleep(1000);
closegraph();
initgraph(300, 160);
for (int i = 0;i < 30;i++)
{
for (int j = 0;j < 16;j++)
{
GridDraw(i * 10, j * 10);
}
}
return;
}
void GAME::GridDraw(int x, int y)
{
setfillcolor(RGB(220, 220, 220));
//setlinecolor(gridLine.color);
//setlinestyle(&gridLine.style);
line.SetLine(gridLine);
fillrectangle(x, y, x + 10, y + 10);
return;
}
void GAME::FlagDraw(int x, int y)
{
;
}
int main()
{
GAME game;
}