C ++ C4716初学者错误。理解错误概念但不确定如何使程序工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++ C4716初学者错误。理解错误概念但不确定如何使程序工作相关的知识,希望对你有一定的参考价值。
我正在为我的一个类开发一个程序,如下所示:
#include <iostream> // std::cout
using namespace std;
#include <windows.h> // SetConsoleCursorPosition(HANDLE,COORD)
#include <conio.h> // _getch()
struct Vector2
{
int x, y;
Vector2() :
x(0), y(0)
{}
Vector2(int x, int y)
{
x = x;
y = y;
}
bool is(int a_x, int a_y)
{
if (a_x == x, a_y==y)
{
return true;
}
return false;
}
};
class Entity //new data class
{
public:
Entity(int x,int y, char i)
{
pos.x = x;
pos.y = y;
icon = i;
}
void setX(int x)
{
pos.x = x;
}
int getX()
{
pos.x;
}
void setY(int y)
{
pos.y = y;
}
int getY()
{
pos.y;
}
void setIcon(char i)
{
icon = i;
}
char getIcon()
{
icon;
}
private:
Vector2 pos;
char icon;
};
enum Gamestate
{
RUNNING, WIN, LOST, USER_QUIT
};
void moveCursor(int x, int y)
{
COORD c = { x,y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}
int main()
{
// player data
Entity e(3, 4, 1);
//game data
Gamestate state = RUNNING;
int input;
Vector2 size(20, 15);
Vector2 winPosition(size.x / 2, size.y / 2);
do
{ //draw the game world
moveCursor(0, 0);
for (int row = 0; row < size.x; row++)
{
for (int col = 0; col < size.y; col++)
{
cout << '.';
} cout << '
';
}
//draw player
moveCursor(e.getX(), e.getY());
cout << e.getIcon();
//get input from user
input = _getch();
//process the user's input
switch (input)
{
case 'w': //move up
e.setY(e.getY() - 1);
break;
case 'a': //move left
e.setX(e.getX() - 1);
break;
case 's': //move down
e.setY(e.getY() + 1);
break;
case 'd': //move right
e.setX(e.getX() + 1);
break;
case 27: //quit game
state = USER_QUIT;
break;
}
//show game state
moveCursor(0, size.y + 1);
switch (state)
{
case WIN:
cout << "You WON! Congratulations!
" ;
break;
case LOST:
cout << "You lost...
";
break;
}
if (winPosition.is(e.getX(), e.getY()))
{
state = WIN;
}
else
{
state = LOST;
}
} while (state == RUNNING);
//User input ESCAPE to quit program
cout << "Press ESCAPE to quit.
";
while (_getch() != 27)
;
return 0;
}
Entity::getY
,Entity::getIcon
,Entity::getX
发生错误如果我正确地理解了错误,那么因为没有从main返回的值?但是我试图修复它的所有事情都让我在之前遇到了更多的错误。
答案
你有几个问题。在你的get函数中,你说你应该返回一些东西,然后永远不会。另一件事是你说的struct Vector2
的构造函数
Vector2(int x, int y)
{
x = x;
y = y;
}
但这并不会改变成员变量。您需要通过更改名称或使用x
来指定您尝试更改的y
和this
。
以上是关于C ++ C4716初学者错误。理解错误概念但不确定如何使程序工作的主要内容,如果未能解决你的问题,请参考以下文章